linux - 关于 pthread_barrier_wait

标签 linux pthreads posix barrier

我正在使用 pthread_barrier_wait 来同步线程,但在我的程序中,一个或多个线程可能会过期,而其他线程正在等待它们到达 pthread_barrier_wait。现在有没有办法让卡在 pthread_barrier_wait 的线程知道一些线程已经过期而所有线程都已到达屏障?

最佳答案

这在很大程度上取决于它们过期的方式和原因。

屏障不关心 pthread_barrier_wait() 在哪里被调用,所以如果它是一个程序化的到期,那么就在那个时候调用等待。屏障计数器递减,当线程被释放时,您可以进行正常的错误检查,然后立即调用 pthread_exit 或其他。将 pthread_wait 放在一个单独的函数中可能会简化事情。

if (must_die)
{
    do_barrier_wait();
    pthread_exit(NULL);
}   

如果线程因为被杀死或取消而过期,那么生活会更加复杂,您可能会进入巨大的黑客领域,这可能值得重新考虑设计。

关于linux - 关于 pthread_barrier_wait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238315/

相关文章:

linux - 使用 awk 生成报告

linux - 在 linux 中删除目录(甚至不能 ls 那个目录)

c - 关于pthread和多线程的问题

条件变量和 mutex_unlock

c++ - 为什么通过以下方式将ID传递给线程很不好?

linux - 我如何决定调用 pthread_attr_setstacksize 后可以使用多少堆栈?

python - 使用 Python 跟踪 Linux 命令

linux - 在 linux HPC 上显示命令历史记录

c++ - 使用 pthreads 避免 bool 变量的数据竞争

c - 如何知道tcp session 结束?