我正在玩 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 打印线程安全?我怎样才能确保这些保持同步?