Наивысшая производительность для передачи сигналов между доменами приложений

Мое чувствительное к производительности приложение использует MemoryMappedFiles для передачи больших объемов данных между многими доменами приложений. Мне нужен самый быстрый механизм, чтобы сигнализировать принимающему AD о том, что есть новые данные для чтения.

Дизайн выглядит следующим образом:

AD 1: Модуль записи в MMF, когда данные записываются, он должен уведомлять AD считывателя

] 2, 3, н. Э ..: Читатель MMF

Читателям не нужно знать, сколько данных записано, потому что каждое записанное сообщение будет начинаться с ненулевого int и будет читаться до нуля, не беспокойтесь о частично записанных сообщениях.

(I think) Традиционно в рамках одного AD для этого можно использовать Monitor.Wait / Pulse, я не думаю, что он работает во всех доменах приложений.

Можно также использовать метод или событие удаленного взаимодействия MarshalByRefObject, но я бы хотел что-то более быстрое. (Я тестирую 1 000 000 вызовов MarshalByRefObject в секунду на моем компьютере, неплохо, но я хочу больше)

Именованный EventWaitHandle примерно в два раза быстрее, чем при первоначальных измерениях.

Есть ли что-нибудь быстрее?

Примечание: получающие объявления нет необходимости получать каждый сигнал, пока последний сигнал не отброшен.

7
задан Cœur 5 December 2018 в 05:36
поделиться