Можно ли присоединиться к отсоединенной нити?
Нет. Это победило бы всю цель detach()
.
A t.detach()
вызов на самом деле не делает ничего существенного. Единственная цель - отключить защитный механизм.
Обычно, если вы не detach()
поток, то деструктор для объекта thread
выдаст ошибку, если вы позволите объекту быть уничтоженным до того, как ваша программа join()ed
его обнаружит. Единственная цель для этого - помочь вам избежать распространенной ошибки: она предназначена для предотвращения выхода и завершения вашей программы main()
до завершения всех других потоков.
Цель t.detach()
--- только цель - сказать библиотеке: «Спасибо, но я знаю, что делаю, мне не нужна помощь, и я НИКОГДА не собираюсь звонить t.join()
.
Если вы хотите, чтобы ваша программа вызывала t.join()
, не звоните t.detach()
.