在C++11中阅读有关多线程的内容时,我注意到一些教程是这样做的:
std::thread(print_message, "Hello").detach();
// instead of...
std::thread t(print_message, "Hello");
t.detach();我的问题是:
std::thread来说,这样做安全吗?发布于 2015-08-21 13:20:31
std::thread的行为与任何其他类型一样。发布于 2015-08-21 15:30:16
为了更详细地讨论第二个问题,临时std::thread对象的行为与任何其他临时对象一样:
它在被绑定到的完全表达被计算后被销毁,这意味着破坏者总是在.detach()调用之后被调用-- std::terminate()没有被调用。
发布于 2018-08-25 14:25:43
在回答问题1:你不允许修改匿名临时人员的“非类”类型(即.内置类型)。但是,您可以在"class“类型的匿名临时人员上调用非const成员函数。见C++ ISO/IEC 14882:1998标准中的3.10.10节。
https://stackoverflow.com/questions/32141324
复制相似问题