我刚开始阅读 《C++ Concurrency In Action 2012》。在第二章中,它展示了一个线程被调用和加入(join)的情景。这里的join不是与线程创建成原子操作。我的意思是说,线程是通过
使用
如果我的猜测正确,那么无法保证加入(join)操作能够成功,并且
std:thread t(...)
启动的,在下一行执行了加入(join)操作。我猜测,当线程被创建时,它可以随时开始执行,包括立即开始执行。如果它在创建程序开始执行之前就立即开始执行并终止,则加入(join)操作将失败。使用
t.joinable()
也会出现同样的问题。如果我的猜测正确,那么无法保证加入(join)操作能够成功,并且
joinable()
断言也没有帮助。我是否有什么遗漏?
join()
也会成功。否则它就没有太大用处了。有关更多详细信息,请参见joinable。 - iPherian