c++ - posix 线程同步停止在同一代码

标签 c++ c multithreading posix

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

void *run() { 
  for (i=0;i<1000;i++){
    do_1st();
    // sync() all stop here wait for all then resume
    do_2nd();
  }
}

我尝试使用 pthread_cond_wait.. 但它看起来很复杂。

做这个有什么简单的等待吗?

谢谢

最佳答案

您可以使用 pthread_barrier ,在启动线程之前对其进行初始化,并将 count 设置为 no。运行循环的线程数。例如如果你有 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();
  }
}

关于c++ - posix 线程同步停止在同一代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3957298/

相关文章:

c++ - 为什么这个文件名参数是字符指针而不是字符串?

java - 将 int 迭代器传递给在 for 循环中定义的新 Runnable

C++ Gtk 线程。我做对了吗?

c++ - 如何用boost spirit构建默认值语法?

c++ - Spirit 在仅出现从 Lexer 获得第一个符号后无法解析

c++ - 用于数值计算的有用的 C++ 库

c - 在C中强制转换为指针类型时会发生什么情况?

c++ - 为什么分配给堆栈中的局部变量的内存比 C++ 中所需的多?

c++ - 在 Windows 上存储信息有哪些选项?我应该如何阅读这些信息?

c++ - 使用 QThreads 未正确使用 CPU 内核