我在玩Cilk,並且遇到了與打印同步的問題。打印速度慢,所以很難保持打印同步。例如...如何在C/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;
}
}
在大多數情況下,打印是好的。但是,它偶爾會不同步,另一個線程的第二個打印語句將在一個線程的打印語句的中間開始。
如何讓C/Cilk印刷線程安全?我如何確保這些保持同步?