2013-04-16 132 views
2

我目前有一个线索,以线性顺序为我执行工作。我想知道是否有办法得到否。在队列中的工作。是否有可能获得链数?

+0

我怀疑没有(但我不确定,所以这不是答案),因为没有办法得到可靠的答案。另一个线程可能会在您的线程检查队列和处理信息之间发布一项工作。 –

+0

线的私人memeber(我认为是成员)有它的计数。但它不可访问 – Rajeshwar

+1

您使用的是什么版本的Boost.Asio?从Boost 1.35到1.53,我不记得'strand'有一个包含操作队列大小的成员。 –

回答

2

有没有简单的方法,因为strand既没有提供公共手段来访问信息,也没有直接包含计数。如果您访问私有成员变量,则可以在strand::impl_内通过count_获取大小。

替代方法包括:

  • 包缠strand,提供了类似的API,它的递增和递减计数。这个新类型需要包装所有处理程序,因为一旦用户的处理程序完成执行,它需要注入一个钩子来减少计数。
  • 创建一个functor对象,在构造期间递增计数,并在销毁期间递减计数。所有的处理程序通过一个链发布或发送将被函数包装。
相关问题