Я предлагаю следующий сервис
, создающий мьютекс, 2 события и файл отображения памяти (mmf), все с именем
, когдаслужба должна отправить данные другому процессу
a.вступает во владение мьютексом
b.записывает данные в mmf
c.сигнализирует о событии # 1, которое означает, что у службы есть новая информация для программы
d.освобождает мьютекс
, когда программа хочет отправить данные в службу
a.вступает во владение мьютексом
б.записывает данные в mmf
c.сигнализирует о событии № 2, которое означает, что в программе появилась новая информация для услуги
d.освобождает мьютекс
, служба проверяет, включено ли событие # 2.Если не продолжает делать свое дело, иначе это:
a.вступает во владение ММФ
б.читает данные
c.сбрасывает событие # 2
d.освобождает мьютекс
, программа проверяет, включено ли событие # 1.Если не продолжает делать свое дело, иначе это:
a.вступает во владение ММФ
б.читает данные
c.сбрасывает событие # 1
d.освобождает mutext
Проблема этого подхода заключается в том, что сообщения могут быть потеряны (например, когда службе удается записать 2 сообщения подряд, прежде чем программа сможет прочитать первое) И только1 процесс может присоединиться к сервису (вы должны убедиться в этом)
Я предлагаю решение на основе сокетов, если это возможно, где встречаются соседние проблемы.
PS выможно использовать mmf для создания какой-то очереди, чтобы избежать первой проблемы