我目前正在学习多线程和使用互斥结构,如锁,信号量和条件变量。
何时是使用3个互斥的每一个的最佳时间,是否有使用这些结构的现实生活中的例子?
任何提示都会有所帮助。 提前谢谢。
答案 0 :(得分:0)
基本上,它们具有不同程度的复杂性和性能。首先,我指出所有这些锁定方法都有变化,我必须对你所指的变体做出假设。
锁定经理往往是最复杂的。一个体面的锁管理器能够检测和打破死锁。锁管理器通常用于同步数据库访问。锁管理器功能有很多变化。
信号量也有许多变种。它们可以设置为处理单次访问,多次访问,单次/多次访问(例如,1个写入器或多个读取器)。开销水平远低于锁管理器。但是,应用程序必须自己处理死锁。
条件变量往往是最简单的锁定方法。它们总是依赖于为锁定而设计的硬件指令,例如测试和设置互锁指令。这通常用于内核资源的自旋锁。