IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> регулирование движения поездов на станции, VC++ 2008 EE
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Здраствуйте!
У меня вот такая тема для разработки -
"Регулирование движения поездов на станции (Система массового обслуживания, потоки)"...
Т.е. можно сказать, что процессорное время (ресурс) - наша станция, тогда потоки - поезда.. и нужно распланировать использование этого ресурса...Но это всё общие фразы..
Объясните пожалуйста, как это должно выглядеть более конкретно..я пока не очень понимаю..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Мне убедительно посоветовали выбрать несколько иной подход:
есть станция, для неё предусмотрено n-е количество мест для стоянки проходящих поездов (для определённости - 3 места, например, для реализации этой идеи использовать семафор с максимальным количеством ресурсов=3).
Если все места заняты - поезд (это будет поток) должен ожидать освобождения места для стоянки (т.е. поезд на время ожидания засыпает). Главная цель - не пропустить поезд на станцию, если там нет свободных мест.
Для поезда, который занял своё место на станции - его время простоя должно определяться по закону (экспоненциальному наверное - с тем смыслом, что чем дольше поезд простоял, тем выше вероятность, что скоро он отправится дальше и освободит место стоянки)
Потоки-поезда должны генерироваться по з-ну Пуассона.
Выходные данные: думаю представить статистику по простоям и по ожиданию освобождения места..

Пока не представляю себе, как должна выглядеть генерация потока-поезда по Пуассону..
тоже самое с временем простоя на станции...не знаю, как поезда-поток "заставить" остаться там на некоторое время (тоже определяемое по закону)..

Пока решила начать с того, что по рандому создавать поезда-потоки, в функции потока в зависимости от состояния семафора записывать на listbox идентификатор поезд и его состояние..Вот только выводятся поезда как попало...Даже не знаю, в чём причина может быть..
А вообще хочу представить движение-остановку поездов-потоков в виде передвижения-застывания label с каким-нибудь текстом..


DWORD TrainThread(int *p)
{
wsprintf(buf,L"Train #%d...",*p);
SendMessage(hListBox,LB_ADDSTRING, 0, (LPARAM)(LPCSTR)buf);

// Проверяем состояние семафора
DWORD dwResult = WaitForSingleObject(hSemaphore, 10000);
DWORD time_stopping;
switch(dwResult) {
case WAIT_OBJECT_0:
// Место есть, остановка
wsprintf(buf,L"Train #%d is stoping...",*p);
SendMessage(hListBox,LB_ADDSTRING, 0, (LPARAM)(LPCSTR)buf);
time_stopping = (rand() % 3000) + 1000; // Время стоянки
Sleep(time_stopping);
ReleaseSemaphore(hSemaphore, 1, NULL); // Освободим семафор
break;

case WAIT_TIMEOUT:
// Семафор занят, ожидаем ...
wsprintf(buf,L"Train #%d: no empty places...waiting",*p);
SendMessage(hListBox,LB_ADDSTRING, 0, (LPARAM)(LPCSTR)buf);
break;
}
return 0;
}

void OnClickButRun(HWND hwnd)
{
// генератор случ. чисел
srand(time(NULL));
if(hSemaphore = CreateSemaphore(NULL, maxPlaces, maxPlaces, NULL)) {
for(int i = 0; i < maxTrains; i++) {
trainID[i] = i+1;
trainHandles[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TrainThread,
&trainID[i], 0, NULL);
}

CloseHandle(hSemaphore);
}
else SendMessage(hListBox,LB_ADDSTRING, 0, (LPARAM)(LPCSTR)TEXT("Error by creation semaphore"));
}





Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
18192123   регулирование движения поездов на станции   13.11.2008 3:37
18192123   Может быть у кого-нибудь есть идеи, как это эту те…   15.11.2008 19:32
volvo   Смотри... Я когда-то делал на форуме эмуляцию рабо…   15.11.2008 20:07
18192123   Мне убедительно посоветовали выбрать несколько ино…   13.12.2008 6:56
volvo   Не то ты делаешь :) Тебе не надо ждать 10 секунд..…   13.12.2008 9:09
18192123   Эх...а у меня не работает..приложение зависает.. и…   14.12.2008 3:14
volvo   В том, что я проверяю в консольном приложении, там…   14.12.2008 4:57
18192123   ... case WAIT_TIMEOUT: // Здесь добавит…   14.12.2008 6:35
volvo   Тебе нужно заставить форму обработать полученные с…   14.12.2008 7:02
18192123   Спасибо большое!! Теперь насчёт генерации …   14.12.2008 23:45
volvo   Скорее всего так оно и должно быть... Как моделиро…   15.12.2008 2:34
18192123   Скорее всего так оно и должно быть... Как моделир…   15.12.2008 3:55
volvo   Вот тут лежит ... Последовательные вызовы этой фун…   15.12.2008 4:20
18192123   Вот тут лежит ... Последовательные вызовы этой фу…   15.12.2008 6:01
volvo   Да, все правильно... Ф-ю Puass можно использовать …   15.12.2008 7:05
volvo   Угу... Во-первых, зачем тебе понадобилось инициали…   15.12.2008 22:49
volvo   Внимательно читать, что написано в предыдущем пост…   3.01.2009 17:46
18192123   здравствуйте! скажите пожалуйста, а как сгенер…   2.01.2009 21:37
18192123   оу..прошу прощения..как-то упустила, что з-н Пуасс…   5.01.2009 0:39


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 7.05.2024 13:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name