在低级语言(C、C++或其他语言)中:我可以选择使用一组互斥锁(如pthread提供的互斥锁或本机系统库提供的任何互斥锁),也可以选择为对象使用单个互斥锁。
锁定互斥锁的效率如何?例如,可能有多少条汇编指令,它们需要多少时间(在互斥被解锁的情况下)?
互斥锁的成本是多少?真的有很多个互斥锁是个问题吗?或者我可以在我的代码中抛出尽可能多的互斥变量,因为我有int
变量,这并不重要。
(我不确定不同硬件之间的差异有多大。如果有的话,我也想了解一下。但我最感兴趣的是常见硬件。
关键是,通过使用许多互斥锁,每个互斥锁只覆盖对象的一部分,而不是整个对象的单个互斥锁,我可以保护许多块。我想知道我应该走多远。也就是说,我是否应该尽可能地保护任何可能的块,无论这意味着多复杂和多多互斥?
WebKits博客文章(2016)关于锁定与这个问题密切相关,它解释了自旋锁、自适应锁、Futex等之间的区别。