![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
Всем привет.
Помогите пожалуйста придумать алгоритм синхронизации. Происходит следущее: есть главный процесс(сервер), на нем запущено n потоков, есть n побочных процессов(клиенты).Сервер устанавливает связь с клиентами через сокеты (каждый поток отвечает за связь с соответсвующим клиентом). Протокол общения: Сервер посылает клиентам сообщения; Клиенты отвечают; Тому клиенту, чей ответ пришел раньше сервер вновь отсылается сообщение. Моя проблема в том, что я не пойму как ответить только тому клиенту кто прислал сообщение раньше. --------------------
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Это сообщение отредактировал(а) MAKCim - 16.5.2008, 09:54 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
Не мог бы ты пояснить что в твоей реализации такое flags, thread и кто просыпается при отправлении pthread_cond_signal(&condition), а то чтото я ничего не понял
--------------------
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
сервер устанавливает 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() Это сообщение отредактировал(а) MAKCim - 16.5.2008, 18:28 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
4eJIoBekMoJIekyJIa |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 2.11.2007 Репутация: нет Всего: нет |
спс разобрался )
--------------------
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |