首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

互斥量有关问题

2013-07-08 
互斥量问题在看unix环境高级编程,书上有句话不理解如下:互斥量本质上说是一把锁,在访问共享资源前对互斥量

互斥量问题
在看unix环境高级编程,书上有句话不理解如下:

互斥量本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量量上的锁。

我想问:这里的共享资源是所有的共享资源吗?如果是的话,那为什么书上会出现使用两个互斥量的例子,我觉得如果锁住的是所有 共享资源的话,那么只要一个互斥量就足够了。 如果不是的话,那么互斥量保护的资源的范围是如何确定的?。。。求大神,我的理解错在哪里了。。。。。?
[解决办法]
锁的粒度要小,否则影响效率,所以有时需要多个锁。

比如说,你会在不同的地方(不是同时)修改全部变量A和B,则最好用两个锁,如果用一个的话,当一个线程正在修改A的时候,其它线程连B都修改不了。
[解决办法]
如果锁的粒度太粗,就会出现很多线程阻塞等待相同的锁,原子并发性的改善微乎其微。如果锁的粒度太细,那么过多的锁开销会使系统性能受到影响,而且代码变得相当复杂。
具体请看《APUE》P305

热点排行