Здравствуйте, sz36, Вы писали:
S>Здравствуйте, dimchick, Вы писали:
D>>- ManualResetEvent не подходит потому, что клиент может начать обрабатывать данные по второму кругу и еще нужно както думать, когда его выключать.
S> Если серверу известно кол-во клиентов, то можно использовать ManualResetEvent вместе с InterlockedExchangeAdd. Сервер прибавляет к значению разделяемой переменной 20 (по числу клиентов) и будит клиентов Event'ом. Каждый клиент вычитывает данные и вычитает из переменной по единичке. Последний клиент понимает, что он последний, по нулевому значению переменной и сбрасывает Event.
Минусов тут два:
1. Клиенты будут просыпаться и в холостую работать, пока все не отработают
2. Если кто-то из клиентов отвалится (упадет процесс), или просто глюк в реализации, то это отразится на остальных клиентах.