从另一个线程调用Boost Thread Sleep_For()

时间:2013-08-20 11:38:11

标签: c++ multithreading boost sleep

和其他很多人一样,我目前正在为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

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

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