可以執行以下操作嗎?可以從同一個線程移動分配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