Цитата(4eJIoBekMoJIekyJIa @ 16.5.2008, 17:25 ) | Не мог бы ты пояснить что в твоей реализации такое flags, thread и кто просыпается при отправлении pthread_cond_signal(&condition), а то чтото я ничего не понял |
сервер устанавливает flags = 0, count = n и блокируется на условной переменной condition каждый поток после получения ответа от клиента вызывает gettimeofday() и захватывает mutex если flags == 0 или текущее время (current) < последнего сохраненного (last), установить flags = 1, last = current, thread = ID текущего потока уменьшаем count на 1 если count == 0, сигналим серверу о том, что получен ответ от всех клиентов и thread содержит ID потока, получившего ответ первым по thread сервер идентифицирует клиента и отсылает сообщение если count > 0, освобождаем mutex блокируем поток вызовом pause() |