我有四个线程,我需要在这些线程之间转换数据,函数如下:
theadFunc(){
processing;
__sync();
processing;
}
linux中是否有任何同步函数可确保线程到达同一点。 在windows中,我使用原子添加和原子比较来实现__sync(),我没有在Linux中找到原子比较函数。
答案 0 :(得分:4)
您可以使用GCC的Atomic builtins进行比较和交换,但您可能需要考虑使用pthreads屏障。有关详细信息,请参阅pthread_barrier_init
和pthread_barrier_wait
的文档。您还可以阅读此pthreads primer以获取屏障使用的工作示例。