Я использую библиотеку PTHREAD для создания & соединительных нитей в С.Самостоятельные против объединяемого POSIX Threads
Когда я должен создать нить как обособленные, с самого начала? Предоставляет ли он какое-либо преимущество в производительности по сравнению с объединенной нитью?
Является ли законным не делать pthread_join() в потоке присоединения (по умолчанию)? Или должна ли такая нить всегда использовать функцию detach() перед pthread_exit() ing?
сомнение: в случае отдельных потоков, что, если основной поток заканчивает выполнение до того, как отсоединенная нить завершена? Я думаю, что это прекратит процесс, убивающий все потоки. Итак, в каких сценариях используются отдельные потоки, потому что я должен быть уверен, что выделенный поток завершил выполнение? – Ajax
@Ajax: Эмпирически, если основной поток заканчивается, программа выходит и потоки ... завершаются. Это, по крайней мере, похоже на поведение в Mac OS X (10.10.1 Yosemite). Я не могу найти ничего в документации POSIX, которая указывает, что другие потоки продолжаются, если вызывается 'exit()' или '_exit()' или '_Exit()'. Если основной поток выполняет 'pthread_exit()', то другие потоки получают шанс завершить. –
С другой стороны: съемные нити хороши, когда у вас уже есть другой механизм опроса; вы можете использовать тот же механизм опроса, чтобы проверить состояние результата, и поэтому знать, завершен ли поток. Это случай: «Готово? Если да, используйте его». –