是否有一个函数在boost中找到有多少人正在等待互斥锁?

时间:2011-08-23 23:04:14

标签: c++ boost locking mutex

我正在使用boost 1.41.0。有没有办法使用boost来查找有多少人在等待锁?

2 个答案:

答案 0 :(得分:6)

否:无法获得可靠的答案,因为它可能会在函数返回之前发生变化,而Boost的界面也不会提供不可靠的方法。

如果你想要这样的东西,你需要在互斥锁旁边实现自己的线程安全计数器;在我的头脑中,我不确定你是否能够可靠地做到这一点,但你可以很容易地区分“大约没有”,“几个”和“很多”,如果它足以满足你的需要。

答案 1 :(得分:0)

您可以在互斥量请求周围放置一个互斥量,使计数器递增,只允许您在该计数器为零时访问互斥锁。

但这似乎是可怕的矫枉过正。

执行此操作的更好方法可能是构建一个小队列并将所有请求添加到队列中(使用围绕push_back和pop_front的互斥锁以及另外的peek_front)。

但这似乎是一项相当有趣的练习。