代码之家  ›  专栏  ›  技术社区  ›  w00d

POSIX线程同步在同一代码处停止

  •  1
  • w00d  · 技术社区  · 14 年前

    我有多个线程,我希望每个线程在代码中的某个点等待其他线程完成,然后继续执行以下操作:

    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..但这似乎很复杂。

    有什么简单的等待吗?

    谢谢你

    1 回复  |  直到 14 年前
        1
  •  5
  •   nos    14 年前

    你可以使用 pthread_barrier ,在启动线程之前初始化它,并设置 count 运行循环的线程数。例如,如果您有8个螺纹:

    pthread_barrier_init(&my_barrier,NULL,8);
    

    线程循环现在变成

    void *run() { 
      for (i=0;i<1000;i++){
        do_1st();
        pthread_barrier_wait(&my_barrier);
        do_2nd();
      }
    }