Мое чувствительное к производительности приложение использует MemoryMappedFiles для передачи больших объемов данных между многими доменами приложений. Мне нужен самый быстрый механизм для оповещения принимающей AD о том, что есть новые данные для чтения.
Дизайн выглядит так:
AD 1: Запись в MMF, когда данные записываются, они должны уведомлять читателя AD
AD 2,3, N ..: Считыватель MMF
Читателям не нужно знать, сколько данных записано, потому что каждое написанное сообщение будет начинаться с ненулевого int и будет читать до нуля, не беспокойтесь о частично написанных сообщениях.
(я думаю) Традиционно, внутри одной AD, Monitor.Wait / Pulse может быть использован для этого, я не думаю, что он работает во всех доменах приложений.
Можно также использовать метод или событие удаленного взаимодействия MarshalByRefObject, но я бы хотел что-то быстрее. (Я тестирую 1 000 000 вызовов MarshalByRefObject / сек на моей машине, неплохо, но я хочу больше)
Имя EventWaitHandle примерно в два раза быстрее по сравнению с первоначальными измерениями.
Есть ли что-нибудь быстрее?
Примечание. Принимающим AD не нужно получать каждый сигнал, пока последний сигнал не сброшен.