0

像许多其他人一样,我目前也在为 boost::thread 开发一个小包装类,并面临编写一个可以从另一个线程调用的简单 sleep(int miliseconds) 函数的问题。就像以前的 boost::thread::sleep() 一样。由于该功能即将停用,因此有新选项:boost::this_thread::sleep_for() 和 sleep_until()。但我看不出我如何能够通过这些来实现想要的行为。而且我也找不到解决方案,尽管这对很多人来说似乎是一个问题。

所以我有我的 ThreadWrapper 类,里面有一个 boost::thread 工作。我想做的是:

ThreadWrapper thread(func_foo);
Thread.sleep(100); //tells the underlying boost:thread of my Threadwrapper
                   //to sleep 100ms

有什么建议么?谢谢!

4

1 回答 1

0

在我看来,这是特定于应用程序的......比如目标线程中的哪个位置应该发生睡眠?假设您有一个线程在等待套接字数据...它实际上已经在休眠...您是否希望它在数据实际到达时再休眠一些?还是停止等待数据?或者,也许你有一个线程处理数字......你可能希望它在工作后休眠。因此,在我看来,您可以有一个简单的类方法setToPause(int ms)来设置成员sleeper值,然后您的工作线程/目标线程会在适当的时候检查该值,如果已设置则重置并休眠(或休眠然后重置,具体取决于您的要求)。不确定这是否解决了您的特定问题(甚至是什么),但它必须比尝试使用线程调度更容易......

于 2013-08-20T12:06:13.313 回答