次のことはできますか?同じスレッドから割り当てられたstd :: threadオブジェクトを移動してもかまいません。
#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"にデータ競争があるのは少なくとも1つのスレッドで読み込まれ、同期なしで別のスレッドで書き込まれるからです。実現していることは、あなたが求めているものではありません。 – BoBTFish