拥有共享资源的多线程应用程序需要使用互斥锁对其访问进行序列化。Mutex可能对系统性能有什么副作用?
如果我想下列条件的应用程序满足:
1 - 无互斥误操作导致死锁,长时间等待或其他灾难性的后果。
2 - 共享资源具有处理所有互斥锁问题的访问器方法(因为等待互斥量最大限度地释放而导致延迟的尝试)。
接受互斥锁是解决与共享资源保护相关的许多问题的问题解决者。使用互斥体对性能有任何副作用?如果是的话应该是什么选择(可能是其他同步机制)?
为了更清楚我的意思,我会考虑下面的例子:
线程读取多个线程之间共享的全局变量的尝试。如果我可以考虑:
a - 阅读操作需要(X us)。
b - 互斥量使用会增加(Y us)的开销。
Ç - 读操作不得超过ž我们其中Z> = X,但ž< X + Y
其次,我认为我可以假设互斥确保互斥,但在的负面影响为代价的表现(这可能是轻微的或相当大的影响取决于上下文)。
互斥锁在很多情况下都很有用,但是在任何情况下都应该避免(或替换)它们,因为它们对系统性能有负面影响,尽管它们在使用时非常谨慎?
注意:这里我指的是作为内核服务提供的Mutexes。我不是指任何试图模仿Mutex(内核服务)的应用程序实现。
其实,我关心的是可能由互斥造成的额外开销。我想知道是否有一些情况下使用互斥锁会引起应用程序/任务目的的唠叨开销。尽管如此,你的意见很有价值。谢谢。 – Aymen