为什么`try_lock的性能总是像互联网上的`lock`一样?

时间:2010-09-11 11:37:08

标签: multithreading locking mutex

关于互斥体:我询问lock here的效果以及try_lock here的效果。

关于try_lock的问题已被关闭,与lock的问题完全相同。但是,我无法理解为什么try_lock必须在每个可能的互斥实现中以与lock相同的方式运行。

由于在下面的讨论中没有真正回答这个问题,我在这里把它作为一个新问题:

为什么会这样?是因为只有一种可能的方法可以实现try_lock吗? (即最自然的方式。)

1 个答案:

答案 0 :(得分:1)

try_lock对给定互斥锁的性能与lock的实现密切相关。如果锁定互斥锁始终需要系统调用,则try_lock可能还需要系统调用。另一方面,如果lock具有在没有系统调用的情况下在用户空间中运行的“快速路径”,则try_lock可能具有与“快速路径”类似的实现。事实上,lock的常见实现基本上是if(!try_lock()) lock_with_system_call()