Проблема в том, что ваш основной поток возвращается из main
, который уничтожает весь процесс и уничтожает все потоки. Возвращение с main
похоже на вызов exit
.
В качестве альтернативы использованию pthread_join
вы можете завершить ваш основной поток вызовом pthread_exit
. Вызов pthread_exit
прервет только основной поток.
Потоковое приложение POSIX продолжает работать до тех пор, пока не завершатся все его потоки или пока не завершится процесс.
(Если присоединяемые потоки не собираются с помощью pthread_join
, это может вызвать утечку ресурсов, но это не проблема в вашей программе или вообще для потоков, которые сохраняются до конца приложения. Тем не менее, это хорошо " программирование "сделать каждый такой поток, который не будет присоединен, отдельным потоком.)