我有多个线程,我希望每个线程在代码中的某个点等待其他线程完成,然后继续执行以下操作:
void *run() { for (i=0;i<1000;i++){ do_1st(); // sync() all stop here wait for all then resume do_2nd(); } }
我试着用pthread ou cond ou wait..但这似乎很复杂。
有什么简单的等待吗?
谢谢你
你可以使用 pthread_barrier ,在启动线程之前初始化它,并设置 count 运行循环的线程数。例如,如果您有8个螺纹:
count
pthread_barrier_init(&my_barrier,NULL,8);
线程循环现在变成
void *run() { for (i=0;i<1000;i++){ do_1st(); pthread_barrier_wait(&my_barrier); do_2nd(); } }