123*_*ing 6 c++ multithreading thread-safety c++11
通常,我会假设C++ 11线程在分离后自动销毁.但问题是,我找不到任何证明这一假设的东西.
根据这篇文章
一旦分离,线程应该永远这样.
永远?如果线程的功能完成,它的资源是否永远存在?
根据这篇文章
调用此函数后,线程对象变为不可连接,可以安全销毁.
它可以安全销毁,但它是否会自动销毁?
如果它没有自动销毁,如何销毁它(不是强行,但在线程结束后的功能)
谢谢阅读.
您应该参考更好的参考.来自std::thread::detach:
将执行线程与线程对象分开,允许执行独立继续.线程退出后,将释放任何已分配的资源.
调用detach之后
*this不再拥有任何线程.
所以回答你的问题(如果还没有):
永远?
否.如果线程结束(例如:如果它计数到10),则完成并且它不再运行.
它的资源是否永远存在?
不,当线程完成时,线程中的每个资源都被释放(如变量等).
它可以安全销毁,但它是否会自动销毁?
你什么意思?线程完成后,无论您是否通话,它都会被自动销毁detach.唯一的区别是,在这里,它们指的是线程对象,所以实际的std::thread实例.
因此,当线程对象被破坏时,您必须已经调用join或者detach无论您是否拥有实际线程已完成.如果你不这样做,std::terminate就叫.