Рассылка данных от одного сервера к нескольлким клиентам
От: dimchick Украина  
Дата: 14.07.11 10:22
Оценка:
Привет ув All,

Нужен совет. Пишу приложение, которое должно рассылать некоторую информацию (30байт) внутри одного компа нескольлким приложениям (~20). Есть очень жесткие требования к производительности. Процесс передачи не должен занимать больше 5-10 микросекунд.

Сейчас пробую смотреть на Shared Memory в качестве сторейджа для данных. Остановился на том, что не могу найти объект ядра, который бы позволил клиентам спать до наступления изменений в сторейдже и не просыпаться, до тех пор пока не придут новые для него новые данные. Тоесть нужно чтото типа такого:

// On client side
WaitUntilEqual( kernel_object, someVal );

// On server side
Update( kernel_object, new_value );

Если делать это в user-mode, то тогда сильно грузится проц. Пробовал играться с существующими объектами ядра:

— ManualResetEvent не подходит потому, что клиент может начать обрабатывать данные по второму кругу и еще нужно както думать, когда его выключать.

— С AutoResetEvent обратная фигня — клиент после просыпания должен высталвять этот евент в сигнальное состояние, если есть еще слушающие другие клиента. И потом latency последнего клиента будет сумарным от latency всех предыдущих.

— Семафор тоже не получается применить.

Сейчас буду играться с мультикастом на локале. ИМХО это будет как с пушки по воробьям. Может есть чтоот еще более легковесное?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.