条件变量与互斥锁

互斥锁

互斥锁也叫互斥变量,是一把锁,在访问共享资源时,给共享变量加一把锁,其他线程由于没有持有互斥变量的锁将会阻塞直到该线程释放该互斥锁!
c通过pthread.h下几个方法来实现互斥锁:

    pthread_mutex_init:初始化互斥变量
    pthread_mutex_lock:给互斥变量加锁
    pthread_mutex_unlock:释放互斥变量锁
    pthread_mutex_destroy:销毁互斥变量锁

条件变量

条件变量是用来实现线程间的唤醒等待功能的,是对全局变量进行同步的一种机制,主要包括两个动作:

1.一个线程"等待" ""条件变量成立"而挂起
2.另外一个线程使"条件变量"成立

同样通过下面几个方法来使用条件变量:

1.pthread_cond_init:条件变量初始化
2.pthread_cond_wait:将线程加入等待列表中(会释放互斥锁)
3.pthread_cond_signal:唤醒某个持有互斥锁的线程
4.pthread_cond_broadcast:唤醒多个持有互斥锁的线程

两种的关系

为了防止竞争关系,一般条件变量要同互斥锁结合起来使用,线程在改变条件变量时要先给互斥变量加锁,pthread_cond_wait将线程置于等待列表(线程挂起,暂时释放互斥锁),直到被唤醒(继续持有互斥锁)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值