![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Tribunal |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
Помогите,пожалуйста, ссделать такое задание:
Имеется N1 серверов которые обрабатывают заявки и N2 клиентов, которые производят заявки. Разработать программу, которая моделирует данную систему, при условии, что серверы и клиенты это отдельные потоки. Очередь заявок ограничена N3 элементами. Время, через которое производится заявка – это время из диапазона (Т1-Т2), время обработки заявки – из диапазона (Т3-Т4). заранее спасибо=) у меня была аналогичная задача,только там не шло речи о синхронизации. там была ситуация с кассами в банках, то есть нынешнюю задачу я понимаю так: потоки серверов...это конкретное число серверов(вводится пользователем N1),которые выполняют обработку заявки за время в диапазоне Т3-Т4(вводится). через время между Т1 и Т2(вводятся) появляются новые потоки-клиенты(их кол-во N2),которые подают заявку и она обрабатывается сервером. при этом есть общая очередь клиентов и очередь для каждого сервера(огрниченная количеством N3-вводится). когда закончатся клиенты-можно вывести отчет какой сервер сколько какого клиента обрабатывал....не знаю,на сколько это возможно... очень прошу помочь!хотя бы советом...не могу придумать,как всё это дело организовать=( зы компилятор C++ Builder 6.0 +прикрепляю файл с кодом про кассы. Прикрепленные файлы ![]() -------------------- irreparabilium felix olivio rerum
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Tribunal, у тебя же уже есть логика работы программы.
Что касается потоков: создаешь несколько потоков - "серверов", общую очередь "клиентов" (можешь пользоваться либо тем классом TQueue, который есть в приведенной тобой программе, либо стандартным std::queue), заполняешь ее несколькими "клиентами" сразу же. Через промежутки времени между T1 и T2 добавляешь в очередь очередного "клиента". Поток-"сервер" должен периодически (когда в его собственной очереди меньше, чем N3 "клиентов") опрашивать наличие "клиентов" в общей очереди, если она не пуста - то "изымать" очередного клиента из общей очереди (здесь не забываем о том, что обращаться к общим данным надо с использованием критических секций, см. EnterCriticalSection/LeaveCriticalSection) и помещать его в свой буфер, а по окончании обработки заявки предыдущего "клиента" - "изымать" нового клиента уже из своей очереди и обрабатывать его заявку в течении времени от T3 до T4. Здесь уже нет необходимости работать с критическими секциями, поскольку к собственной очереди "сервера" никто другой доступа не имеет... Статистику можно накапливать здесь же, у "сервера", подсчитывая число и время обслуживания клиентов. Как только очередь "клиентов" пуста - можно удалять потоки-"серверы", для которых закончилась собственная очередь... Перед удалением "сервера" его можно заставить передать всю статистику, например, в Memo основной формы, опять же не забывая о синхронизации - чтобы не было попыток одновременной записи из разных потоков... |
Tribunal |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
не получается=(
просто технически не получается...=( по идее клиенты-тоже потоки...нужно создавать очередь потоков? о_О значит когда клиенты переходят из общей очереди в очередь сервера, тоже нужно использовать EnterCriticalSection/LeaveCriticalSection ... помогите,пожалуйста, ещё... хотя бы какой-то набросок... ссображаю плохо че-то=( помогите...мне просто эта программа уже срочно нужна... -------------------- irreparabilium felix olivio rerum
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата по идее клиенты-тоже потоки... А вот это - непонятно... Зачем клиенту быть потоком, а не просто классом/записью (я не сказал, что не получится реализовать с потоками, я просто идею саму не понимаю). |
Tribunal |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
я тоже не понимаю=(
так что?подбросите ещё подсказок? ![]() -------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 17:17 |