【发布时间】:2013-07-08 13:14:50
【问题描述】:
正如问题所述,std::mutex 公平吗?即,如果线程 A 锁定了互斥体,然后 B 和 C 按此顺序对其调用 'lock()' ,它们会以相同的顺序获得互斥体上的锁还是未指定顺序?
documentation 根本没有解决这个问题。
【问题讨论】:
-
如果文档没有解决这个问题,我猜这意味着它未指定。
-
为了让它们保持有序:stackoverflow.com/questions/9046746/…
-
这个open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf 可能是“文档”的更好来源
-
感谢您的提示,但这是一份工作草案。
-
你必须为发布的版本支付一大笔钱。公平是一个实现细节。您唯一可以真正指望的是,不提供任何公平性的实现不太可能长期存在。或者换一种说法,当你使用别人的代码时,你应该有一些的信心,相信他们做对了。如果您不为实现命名,我们无法帮助您对此感觉更好。