1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Доброго времени суток! Мне нужно реализовать мьютекс, событие и семафор, по заданию. С мьютексом и событием я вроде бы разобрался и выполнил, а вот на семафоре застопорился, на то он и семафор..наверное)) Вообщем, помогите мне пожалуйста с его реализацией!... какой-нибудь рабочий примерчик тоже сойдёт)
Можешь еще посмотреть у Рихтера, он тоже показывал, как работать с семафорами...
А вот как это всё применить для решения конкретной задачи? Вот собственно сама задача : на бензозаправке было построено 4 заправочных места. Считая их одинаковыми, подсчитать, какое количество машин вынуждено было проехать мимо, так как все места были заняты. Новая машина подъезжает к заправке через 1-2 мин. Время заправки одной машины – 1-4 мин. Для контроля количества свободных мест на заправке использовать семафор. Как хотя бы передать основную идею семафора...
Да и что-то пример на MSDN оказался крайне непонятным для меня.
// Ждем завершения всех тредов ... WaitForMultipleObjects(maxCars, carHandles, TRUE, INFINITE); // ... и только потом удаляем семафор CloseHandle(hSemaphore); } // Создать семафор не удалось else cout << "Cannot create semaphore" << endl;
return 0; }
Ну, подсчет проехавших мимо машин добавишь сам, основная идея должна быть понятна...
А вот с событием что-то не получается. Я запускаю два приложения: в одном вывожу сообщение, нажимаю на клавиатуру и после этих действий в другом должна быть выведена другая строка. Но последного не происходит... Вообще само задание формулировалось следующим образом: реализовать два процесса, один из которых дожидается нажатия клавиши (или кнопки на окне) и сообщает об этом другому процессу с помощью события. После того, как второй процесс дождется события, он должен вывести на экран сто разноцветных геометрических фигур...(привел с целью полного ознакомления с заданием ) Помогите довести до ума то, что я начал.
Я запускаю два приложения: в одном вывожу сообщение, нажимаю на клавиатуру и после этих действий в другом должна быть выведена другая строка. Но последного не происходит...
Хм... Что я делаю не так? Сначала запустил приложение, создающее Event, потом - приложение, открывающее Event. Все так, как ты и сказал: при нажатии кнопки во втором в окне первого добавляется еще одна строка... Проверяй после OpenEvent, что возвращает GetLastError, возможно, событие не открывается?
Хм... Что я делаю не так? Сначала запустил приложение, создающее Event, потом - приложение, открывающее Event. Все так, как ты и сказал: при нажатии кнопки во втором в окне первого добавляется еще одна строка... Проверяй после OpenEvent, что возвращает GetLastError, возможно, событие не открывается?
Да, действительно всё работает...видимо я сначала запускал приложение, которое открывает Event, а не создаёт его...