Cilkで遊んでいますが、同期印刷で問題が発生しています。印刷が遅いため、印刷の同期を維持するのは困難です。例えば...
void ftn(int x)
{
if (x % 2 == 0)
{
std::cout << "printing.. " << x << std::endl;
}
else
{
cilk_spawn ftn(x/2);
cilk_spawn ftn(x++);
cilk_spawn ftn(x*x);
cilk_sync;
}
}
ほとんどの場合、印刷は問題ありません。ただし、同期がとれなくなることがあり、別のスレッドからの2番目のprintステートメントが1つのスレッドのprintステートメントの途中で開始されます。
C / Cilk印刷をスレッドセーフにするにはどうすればよいですか?これらが同期していることを確認するにはどうすればよいですか?