0 / 0 / 1
Регистрация: 15.08.2012
Сообщений: 6
|
||||||
1 | ||||||
Синхронизация потоков, события, WinAPI02.08.2013, 12:33. Показов 3303. Ответов 3
Метки нет Все метки)
(
Уважаемые программисты!
Решается такая задача: 5 потоков генерируют псевдослучайные числа, главный поток выводит их, при нажатии "enter" все должно быть остановлено и выведена сумма всех этих чисел. Я написала это так:
либо: что не есть правильно. Подскажите, пожалуйста, как избавиться от последней ситуации?
0
|
|
02.08.2013, 12:33 | |
Ответы с готовыми решениями:
3
Синхронизация потоков
|
Модератор
3361 / 2134 / 351
Регистрация: 13.01.2012
Сообщений: 8,312
|
|
02.08.2013, 12:51 | 2 |
удивительно что вообще работает... несколько потоков выбрасывают одно и то же событие которое ожидает основной поток который думает что выброс этого события означает что отработали ВСЕ потоки хотя по факту отработать может только один. потом при нажатии клавиши потоки останавливаются и при этом мы ожидаем что они завершаться - интересно когда если они стоят... очень все это интересно
0
|
0 / 0 / 1
Регистрация: 15.08.2012
Сообщений: 6
|
|
02.08.2013, 13:00 [ТС] | 3 |
vxg, значит надо создать событие для каждого потока?
P.S. Извините, если я туплю ![]()
0
|
Модератор
3361 / 2134 / 351
Регистрация: 13.01.2012
Сообщений: 8,312
|
|
02.08.2013, 13:11 | 4 |
я бы вообще это как то по другому сделал. пальцем в небо - каждый поток формирует число, входит в критическую секцию, пишет в глобальную переменную свой номер, выбрасывает событие 1, ожидает событие 2, выходит из критической секции. основной поток ловит событие 1, читает из переменной номер потока выбросившего это событие, выводит число сформированное этим потоком, выбрасывает событие 2. когда пользователь нажал кнопку основной поток входит во вторую критическую секцию, пишет в глобальную переменную "пора заканчивать", выходит из критической секции и ожидает событие 3. внутри потоков в цикле кроме формирования числа осуществляется вход во вторую критическую секцию, анализ глобальной переменной "пора заканчивать", если действительно пора - увеличение глобального счетчика завершенных потоков, когда счетчик достигает значения количества потока - идет выброс события 3, выход из критической секции. может можно лучше - просто от балды придумал
1
|
02.08.2013, 13:11 | |
Помогаю со студенческими работами здесь
4
Синхронизация потоков в c++ Синхронизация процессов и потоков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |