我在玩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印刷线程安全?我如何确保这些保持同步?