2017年4月5日

线程同步方式---5 屏障

摘要: 一.概述 barrier(屏障)与互斥量,读写锁,自旋锁不同,它不是用来保护临界区的。相反,它跟条件变量一样,是用来协同多线程一起工作!!! 条件变量是多线程间传递状态的改变来达到协同工作的效果。屏障是多线程各自做自己的工作,如果某一线程完成了工作,就等待在屏障那里,直到其他线程的工作都完成了,再一 阅读全文

posted @ 2017-04-05 16:39 暴力的轮胎 阅读(520) 评论(0) 推荐(0) 编辑

线程同步方式---4 自旋锁

摘要: 自旋锁与互斥量功能一样,唯一一点不同的就是互斥量阻塞后休眠让出cpu,而自旋锁阻塞后不会让出cpu,会一直忙等待,直到得到锁!!! 自旋锁在用户态使用的比较少,在内核使用的比较多!自旋锁的使用场景:锁的持有时间比较短,或者说小于2次上下文切换的时间。 自旋锁在用户态的函数接口和互斥量一样,把pthr 阅读全文

posted @ 2017-04-05 16:11 暴力的轮胎 阅读(171) 评论(0) 推荐(0) 编辑

线程同步方式---2 条件变量

摘要: 自述 上面的介绍的互斥量,典型的消费者-生产者模型有一个问题,就是每一次生产者函数都要 加锁-查看money-解锁 ,这么一整流程即使在money !=0 的情况下依然要经历这个流程,造成资源浪费。 这里引入条件变量,当main中直到money=0的时候,通知生产者直接进入互斥资源生产money。 阅读全文

posted @ 2017-04-05 16:08 暴力的轮胎 阅读(429) 评论(0) 推荐(0) 编辑

线程同步方式---1 互斥锁

摘要: 概述: 互斥锁可能是最简单的锁机制了。也是一个阻塞锁。 函数API: 1.1:用宏常量初始化: 1.2:用函数初始化: 2.设置互斥量属性 attr:互斥量的属性结构指针 type:PTHREAD_MUTEX_NORMAL(默认属性),PTHREAD_MUTEX_ERRORCHECK(会进行错误检查 阅读全文

posted @ 2017-04-05 14:51 暴力的轮胎 阅读(652) 评论(0) 推荐(0) 编辑

线程同步方式---3 读写锁

摘要: 读写锁对比互斥锁好处是: 1)高并行性,读写锁根据线程对资源的操作类型分为 读 和 写,分别上锁,能够提高访问效率。而不是像互斥锁一样,不分读还是写操作,上锁之后其他进程都不能访问。如果当前临界区上了读锁,之后的写锁会阻塞。知道获得临界区,那么之后的读锁也会阻塞,可以防止写锁饥饿。 2)如果写锁占领 阅读全文

posted @ 2017-04-05 14:41 暴力的轮胎 阅读(281) 评论(0) 推荐(0) 编辑

导航