可以执行以下操作吗?可以从同一个线程移动分配std ::线程对象吗
#include <iostream>
#include <thread>
std::thread th;
void foo()
{
std::cout << __func__ << std::endl;
th = std::thread(foo);
}
int main()
{
th = std::thread(foo);
th.join();
}
gcc崩溃 - http://coliru.stacked-crooked.com/a/3c926507ab0f8a5c。
我知道几乎没有必要这样做,但我只想为学术目的知道答案。
在我看来,至少在'th'上有一场数据竞赛,因为它是在一个线程中读取的,并且在没有同步的情况下被写入另一个线程。意识到的并不完全是你所问的。 – BoBTFish