Как реализовать общий буфер? - PullRequest
1 голос
/ 05 августа 2011

У меня есть одна программа, которая создает 3 рабочие программы.В моем случае предпочтительным способом связи будет использование буфера памяти, к которому могут обращаться все четыре программы.

Есть ли способ передать указатель, ссылку или любой другой обработчик на дочерние процессы?

Обновление

Три дочерние программы преобразуют данные вершин, в то время как основная программа в основном работает с пользовательским интерфейсом, системными сообщениями, ошибками и т. Д.

I'mнадеясь, что есть какой-то способ использовать OpenCL, чтобы четыре программы могли совместно использовать контекст.Если это невозможно, было бы неплохо иметь доступ к массиву вершин во всех программах.

Я полагаю, что нашей целевой платформой сейчас является Windows, но мы бы хотели, чтобы она была как можно более кроссплатформенной.Если нет способа реализовать это с использованием OpenCL, мы, вероятно, вернемся к переносу этого фрагмента кода для нескольких различных платформ.

Ответы [ 4 ]

2 голосов
/ 05 августа 2011

Ваш вопрос зависит от платформы, поэтому:

1 голос
/ 06 августа 2011

Это несколько шире, чем первоначальный вопрос о буферах совместно используемой памяти, но в зависимости от вашего дизайна, объема данных и требований к производительности вы можете посмотреть на базы данных в памяти, такие как Redis или распределенные кэши, особенно если вы оказались в опубликовать-подписаться 'ситуация.

1 голос
/ 05 августа 2011

Вы должны использовать Именованная общая память и межпроцессную синхронизацию.

1 голос
/ 05 августа 2011

Если вы немного объясните, какие данные передаются и другие ограничения / цели системы, вам будет проще ответить на ваш вопрос.

Интересно, почему вы думаете, что общий буфер будет хорошим? Это потому, что вы хотите передать указатель в буфере на данные для обработки? Тогда вам нужна общая память, если вы хотите работать между процессами.

А как насчет клиент-серверного подхода, когда вы отправляете данные клиентам по запросу?

Более подробная информация о вашей проблеме помогает дать лучший ответ.

...