在Java中,多个线程可以在某个点等待所有其他线程,以便它们在所有其他线程完成第一个块之前不开始新的代码块:
CyclicBarrier barrier = new CyclicBarrier(2);
// thread 1
readA();
writeB();
barrier.await();
readB();
writeA();
// thread 2
readA();
writeB();
barrier.await();
readB();
writeA();
是否有精确或简单的转换方法转换到C ++?
另外,在OpenCL中,有一个类似的指令:
readA();
writeB();
barrier(CLK_GLOBAL_MEM_FENCE);
readB();
writeA();
因此,所有相邻的线程都会等待彼此,但这只是一个受限制的C实现。