线程加入有什么好处?如果要加入一个线程来停止线程A直到线程B完成执行,例如(B.join())为什么不使用全局变量来执行此操作?
答案 0 :(得分:6)
因为join()
允许A进入休眠状态并且在B结束之前不消耗CPU时间,并且它还确保B在继续使用A之前已经完全结束。通常它会更有效率。它还避免了创建额外变量的麻烦。
答案 1 :(得分:2)
您希望将pthread_join()
或pthread_detach()
调用使用标记PTHREAD_CREATE_JOINABLE
创建的线程的另一个原因是:系统可以在线程终止后回收与该线程关联的所有资源。无法加入或分离可连接线程会导致内存和其他资源泄漏,直到进程结束。