如何理解多线程和互斥原语

时间:2016-10-14 17:53:44

标签: c multithreading operating-system locking semaphore

我目前正在学习多线程和使用互斥结构,如锁,信号量和条件变量。

何时是使用3个互斥的每一个的最佳时间,是否有使用这些结构的现实生活中的例子?

任何提示都会有所帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

基本上,它们具有不同程度的复杂性和性能。首先,我指出所有这些锁定方法都有变化,我必须对你所指的变体做出假设。

  1. 锁定经理往往是最复杂的。一个体面的锁管理器能够检测和打破死锁。锁管理器通常用于同步数据库访问。锁管理器功能有很多变化。

  2. 信号量也有许多变种。它们可以设置为处理单次访问,​​多次访问,单次/多次访问(例如,1个写入器或多个读取器)。开销水平远低于锁管理器。但是,应用程序必须自己处理死锁。

  3. 条件变量往往是最简单的锁定方法。它们总是依赖于为锁定而设计的硬件指令,例如测试和设置互锁指令。这通常用于内核资源的自旋锁。