当前位置:  技术问答>linux和unix

互斥量问题

    来源: 互联网  发布时间:2017-04-10

    本文导语:  在看unix环境高级编程,书上有句话不理解如下: 互斥量本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量量上的锁。 我想问:这里的共享资源是所有的共享资源吗?如果是的话,...

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

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

我想问:这里的共享资源是所有的共享资源吗?如果是的话,那为什么书上会出现使用两个互斥量的例子,我觉得如果锁住的是所有 共享资源的话,那么只要一个互斥量就足够了。 如果不是的话,那么互斥量保护的资源的范围是如何确定的?。。。求大神,我的理解错在哪里了。。。。。?

|
锁的粒度要小,否则影响效率,所以有时需要多个锁。

比如说,你会在不同的地方(不是同时)修改全部变量A和B,则最好用两个锁,如果用一个的话,当一个线程正在修改A的时候,其它线程连B都修改不了。

|
如果锁的粒度太粗,就会出现很多线程阻塞等待相同的锁,原子并发性的改善微乎其微。如果锁的粒度太细,那么过多的锁开销会使系统性能受到影响,而且代码变得相当复杂。
具体请看《APUE》P305

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,