在线程并发执行的时候,我们需要保证临界资源的安全访问,防止线程争抢资源,造成数据二义性。
线程同步: 条件变量
为什么使用条件变量?...是一种同步机制,一个线程用于修改这个变量使其满足其它线程继续往下执行的条件,其它线程则接收条件已经发生改变的信号。
条件变量操作?...一对一唤醒
唤醒等待队列中的一个线程
pthread_cond_broadcast 广播唤醒
唤醒等待队列中的全部线程
为什么等待和解锁需要原子操作/为什么条件变量要使用互斥锁?...如果先解锁,锁被没有阻塞等待的线程拿到了,再把临界资源使用了,解锁后的singal就没意义了,也就是虚假唤醒;
先singal唤醒,再让唤醒的线程争抢锁,在linux下,有两个队列,一个是cond_wait...互斥锁操作?
初始化和销毁
加锁—如果计数为1,置0,进行需要的操作;如果计数为0,则阻塞等待计数变为1
解锁—计数置为1
以上就是本次介绍的全部相关知识点,感谢大家的学习和对ZaLou.Cn的支持。