之间有什么不同join()
and detach()
在C++中的多线程中?
做join()
杀死线程?
A C++ thread
对象通常(但不总是)代表一个执行线程,这是一个操作系统或平台概念。
When thread::join()
被调用时,调用线程将阻塞,直到执行线程完成。基本上,这是一种可用于了解线程何时完成的机制。什么时候thread::join()
返回,操作系统线程执行完成,C++thread
对象可以被破坏。
当。。。的时候thread::detach()
被调用时,执行线程与thread
对象并且不再由 a 表示thread
对象 - 它们是两个独立的东西。 C++thread
对象可以被销毁,操作系统线程可以继续执行。如果程序需要知道执行线程何时完成,则需要使用其他机制。join()
不能就此要求thread
不再是对象,因为它不再与执行线程关联。
销毁 C++ 被认为是错误thread
对象,同时它仍然是“可连接的”。也就是说,为了破坏一个C++thread
反对join()
需要调用(并完成)或detach()
必须被调用。如果是 C++thread
对象在销毁时仍然可连接,会抛出异常。
C++ 的一些其他方式thread
对象将不代表执行线程(即,可以是不可连接的):
- 默认构造的
thread
对象不代表执行线程,因此不可连接。
- 已移出的线程将不再代表执行线程,因此不可加入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)