Книга: Программирование для Linux. Профессиональный подход
4.1.2. Ожидание завершения потоков
4.1.2. Ожидание завершения потоков
Одно из решений описанной выше проблемы заключается в том, чтобы заставить функцию main()
дождаться завершения обоих потоков. Нужна лишь функция наподобие wait()
, которая работает не с процессами, а с потоками. Такая функция называется pthread_join()
. Она принимает два аргумента: идентификатор ожидаемого потока и указатель на переменную void*
, в которую будет записано значение, возвращаемое потоком. Если последнее не важно, задайте в качестве второго аргумента NULL
.
В листинге 4.3 приведена исправленная версия функции main()
из предыдущего, неправильного примера. В данном случае функция main()
не завершается, пока оба дочерних потока не выполнят свои задания и не перестанут ссылаться на переданные им структуры.
- Ожидание завершения потока
- Альтернативы портам завершенияввода
- Достоинства и недостатки потоков
- Речевые модули для завершения продажи
- 4.3 Потоковый редактор sed
- Используйте «инстинкт завершения»
- Множество потоков, соревнующихся между собой за обладание единственным ресурсом
- Совет 12. Разумно оценивайте потоковую безопасность контейнеров STL
- Ожидание процесса
- Глава пятая. Затянувшееся ожидание
- Листинг 5.4. (sem_pv.c) Ожидание и установка двоичного семафора
- Необходимость в синхронизации потоков