pthread使用barrier栅栏方式同步

Linux提供pthread_barrier作为多线程同步机制,实现所有线程到达栅栏点后一起继续执行。适用于线程初始化配置等场景,确保主线程等待子线程完成特定任务后再继续。主要涉及栅栏相关API及使用示例。
摘要由CSDN通过智能技术生成

博客搬家,原地址:https://langzi989.github.io/2018/07/05/pthread使用barrier栅栏方式同步/

Linux中提供了多种同步机制,其中使用barrier(栅栏)是多线程之间进行同步的方法之一。

基本原理

假设多个线程约定一个栅栏,只有当所有的线程都达到这个栅栏时,栅栏才会放行,否则到达此处的线程将被阻塞。

使用场景

程序启动的时候,需要建立一个独立的线程去做一些特殊的工作。比如这个线程需要初始化一些全局配置等等。而主线程启动后,必须等待这个子线程拿到配置信息后,才能继续工作。所以这里就存在一个问题要解决,主线程如何等待这个子线程完成工作后,才继续往下执行呢?

栅栏相关API

#include <pthread.h>

//初始化栅栏,栅栏需要等待到count个线程,才会全部一起放行。
int   pthread_barrier_init(pthread_barrier_t *restrict,
                        const pthread_barrierattr_t *restrict, unsigned count);

//报道函数,当一个线程到达栅栏的时候&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值