Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синхронизация потоков 
:(
    Опции темы
Lost_soul
Дата 24.12.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.9.2007

Репутация: нет
Всего: нет



Помогите,пожалуйста, ссделать такое задание:

Имеется N1 серверов которые обрабатывают заявки и N2 клиентов, которые производят заявки.
Разработать программу, которая моделирует данную систему, при условии, что серверы и клиенты это отдельные потоки. 
Очередь заявок ограничена N3 элементами. Время, через которое производится заявка – это время из диапазона (Т1-Т2), время обработки заявки – из диапазона (Т3-Т4).

заранее спасибо=)

у меня была аналогичная задача,только там не шло речи о синхронизации.
там была ситуация с кассами в банках, то есть нынешнюю задачу я понимаю так:
потоки серверов...это конкретное число серверов(вводится пользователем N1),которые выполняют обработку заявки за время в диапазоне Т3-Т4(вводится).
через время между Т1 и Т2(вводятся)  появляются новые потоки-клиенты(их кол-во N2),которые подают заявку и она обрабатывается сервером.
при этом есть общая очередь клиентов и очередь для каждого сервера(огрниченная количеством N3-вводится).
когда закончатся клиенты-можно вывести отчет какой сервер сколько какого клиента обрабатывал....не знаю,на сколько это возможно...

очень прошу помочь!хотя бы советом...не могу придумать,как всё это дело организовать=(

зы 
компилятор C++ Builder 6.0
+прикрепляю файл с кодом про кассы.

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  BANK.rar 3,54 Kb
PM MAIL   Вверх
xvr
Дата 24.12.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Lost_soul @ 24.12.2007,  10:31)
Помогите,пожалуйста, ссделать такое задание:

Имеется N1 серверов которые обрабатывают заявки и N2 клиентов, которые производят заявки.
Разработать программу, которая моделирует данную систему, при условии, что серверы и клиенты это отдельные потоки. 
Очередь заявок ограничена N3 элементами. Время, через которое производится заявка – это время из диапазона (Т1-Т2), время обработки заявки – из диапазона (Т3-Т4).

заранее спасибо=)

у меня была аналогичная задача,только там не шло речи о синхронизации.
там была ситуация с кассами в банках, то есть нынешнюю задачу я понимаю так:
потоки серверов...это конкретное число серверов(вводится пользователем N1),которые выполняют обработку заявки за время в диапазоне Т3-Т4(вводится).
через время между Т1 и Т2(вводятся)  появляются новые потоки-клиенты(их кол-во N2),которые подают заявку и она обрабатывается сервером.
при этом есть общая очередь клиентов и очередь для каждого сервера(огрниченная количеством N3-вводится).
когда закончатся клиенты-можно вывести отчет какой сервер сколько какого клиента обрабатывал....не знаю,на сколько это возможно...

очень прошу помочь!хотя бы советом...не могу придумать,как всё это дело организовать=(

зы 
компилятор C++ Builder 6.0
+прикрепляю файл с кодом про кассы.

Организовать очень просто:
1) Клиенты и серверы просто потоки
2) Центральная часть системы - очередь запросов.
3) Количество элементов в очереди считается семафором (макс. значение семафора - N3)
4) Добавление и удаление элементов из очереди производится под контролем критической секции.

Добавление заявки:
1) Захватывается критическая секция
2) Увеличение семафора на 1 (ReleaseSemaphore), если увеличение невозможно, то освобождение крит. секции, Sleep и все снова.
3) Добавляется заявка в очередь, 
4) Освобождается критическая секция

Обработка заявки:
1) Ожидание семафора
2) Захват критической секции
3) Извлечение заявки
4) Освобождение критической секции
5) Обработка заявки (Sleep на время из диапазона T3-T4)

Все потоки серверов ждут на п1 из обработчика, потоки клиентов весят в Sleep и периодически просыпаясь шлют заявки.

Имеет смысл добавить еще один Event для обеспечения корректного выключения всей системы, потоки серверов при этом должны ждать в п1 семафора или этого Event'а, при наступлении последнего они должны завершаться.

Главный поток должен создать все синхронизирующие объекты, породить клиентов и серверов, и ждать окончания сессии (как его задаст пользователь), после чего он должен установить спец. переменную, по которой должны завершиться все клиентские потоки, затем установить Event, затем ждеть завершения всех потоков (клиентов и серверов), затем завершиться сам.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.