Форум программистов, компьютерный форум CyberForum.ru

И снова потоки - C++

Восстановить пароль Регистрация
 
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 467
Завершенные тесты: 1
23.02.2014, 23:08     И снова потоки #1
И опять работа с потоками...Как она меня напрягает последнее время) Но нужно научиться, нужно сделать то, что я задумал. Думаю вы поможете мне в этом)
Итак, есть 3 потока - START, KEYPRESSED, MAIN(главный поток).
Главный поток MAIN запускает сразу два потока одновременно - START и KEYPRESSED, и ждет их завершения. Но он должен ждать их завершения очень интересно:
Если завершиться поток START, то мы завершаем самостоятельно поток KEYPRESSED и возвращаемся в поток MAIN.
Если завершиться поток KEYPRESSED, то мы приостанавливаем поток START, возвращаемся в MAIN и зная что завершился поток KEYPRESSED, вывести соответствующее сообщение, на пример "KEYPRESSED THE END".
Как такую систему потоков можно осуществить? Работаю с WinAPI, но можно объяснить и на уровне стандартной библиотеки C++ 11 - std. Есть функция WaitFoSingleObject, которая при передаче соответствующего параметра ждет завершения потока. Но как сделать,чтобы мне ждать завершения одного из двух потоков, и точно знать, какой поток завершился, вот это скорее всего мне нужно.
Помогите пожалуйста, нужно очень для продолжения выполнения задачи. Дальше этого не могу двигаться(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 23:08     И снова потоки
Посмотрите здесь:

C++ И снова палиндром
C++ снова о массивах
C++ и снова С++
C++ Снова о локализации
C++ Снова конструктор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.02.2014, 23:55     И снова потоки #2
http://msdn.microsoft.com/en-us/libr...25(VS.85).aspx
после окончания ожидания по хендлам потоков можно определить, какой из них завершился.
функцию не помню.
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 467
Завершенные тесты: 1
24.02.2014, 00:40  [ТС]     И снова потоки #3
ну эту функцию тоже знаю...наверное самое главное - это определить какой именно поток завершился
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.02.2014, 01:21     И снова потоки #4
читайте внимательнее документацию:
в указанной ссылке есть инфа:
If bWaitAll is FALSE, the return value minus WAIT_OBJECT_0 indicates the lpHandles array index of the object that satisfied the wait. If more than one object became signaled during the call, this is the array index of the signaled object with the smallest index value of all the signaled objects.
или так:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Yandex
Объявления
24.02.2014, 01:21     И снова потоки
Ответ Создать тему
Опции темы

Текущее время: 12:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru