更多C++学习笔记,关注 wx公众号:cpp读书笔记
Item 38:Be aware of varying thread handle destructor behavior
Item37中说明了可结合的std::thread
对应于执行的系统线程。未延迟(non-deferred)任务的future(参见Item36)与系统线程有相似的关系。因此,可以将std::thread
对象和future对象都视作系统线程的句柄(handles)。
从这个角度来说,有趣的是std::thread
和future在析构时有相当不同的行为。在Item37中说明,可结合的std::thread
析构会终止你的程序,因为两个其他的替代选择——隐式join
或者隐式detach
都是更加糟糕的。但是,future的析构表现有时就像执行了隐式join
,有时又像是隐式执行了detach
,有时又没有执行这两个选择。它永远不会造成程序终止。这个线程句柄多种表现值得研究一下。
我们可以观察到实际上future