1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Здраствуйте! У меня вот такая тема для разработки - "Регулирование движения поездов на станции (Система массового обслуживания, потоки)"... Т.е. можно сказать, что процессорное время (ресурс) - наша станция, тогда потоки - поезда.. и нужно распланировать использование этого ресурса...Но это всё общие фразы.. Объясните пожалуйста, как это должно выглядеть более конкретно..я пока не очень понимаю..
В том, что я проверяю в консольном приложении, там нет необходимости в синхронизации, а ты - в оконном, а в оконном надо обрабатывать сообщения.
В качестве "костыля" могу предложить использовать:
int b = 1; do { // DWORD r = ; // дождаться всех switch(WaitForMultipleObjects(maxTrains, trainHandles, TRUE, 100)) { case WAIT_TIMEOUT: // Здесь добавить аналог Application->ProcessMessages() чтоб обновить окно; break; default: b = 0; } } while(b);
CloseHandle(hSemaphore);
вместо
WaitForMultipleObjects(maxTrains, trainHandles, TRUE, INFINITE); // дождаться всех CloseHandle(hSemaphore);
Кстати, случайными значения, генерируемые по rand() у тебя тоже не будут. Будет постоянно генерироваться одно и то же число. Чтобы это были действительно случайные числа, надо вызывать srand() не в основном потоке, а в каждом дочернем:
DWORD TrainThread(int *p) { __int64 gTime; QueryPerformanceCounter((LARGE_INTEGER *)&gTime); srand(gTime); // дальше функция потока