Какой самый быстрый путь к IPC между приложениями C и C #? - PullRequest
2 голосов
/ 30 августа 2011

Я хочу отправить много строк (~ 250000) в течение <1 секунды из приложения C в приложение C #.Когда я делаю это с WM_COPYDATA и SendMessage, мое C # приложение зависает.Что еще я могу сделать?Именованные каналы включены только в .NET 4, и я использую .NET 2. </p>

РЕДАКТИРОВАТЬ: я собираюсь придерживаться WM_COPYDATA и добавление в список (что является быстрой операцией).Затем опубликуйте этот список.

Ответы [ 3 ]

5 голосов
/ 30 августа 2011

Самый быстрый вариант - использовать именованные каналы через P / Invoke .Это все еще намного выше, чем у большинства других вариантов IPC.

4 голосов
/ 30 августа 2011

Общая память или MMF - самый быстрый метод. Это так же быстро, как объекты ядра, используемые для сигнализации о доступности данных. И, что более важно, вы можете сначала открыть общую память, а затем поместить свои данные прямо туда (экономит одну операцию копирования) и передать сигнал другому приложению. Это другое приложение может потреблять данные непосредственно из общей памяти (опять же, не нужно копировать).

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

Не самый быстрый на win32 в настоящее время, но стоит изучить: 0mq

Использует сокеты TCP в Windows, но очень эффективно.

Для решения с закрытым исходным кодом я не наденуНе думаю, что 29 Ultra Messaging от West можно легко превзойти, включая редкую функцию обмена сообщениями без копирования в .net

...