boost :: thread sleep()有什么作用?

时间:2009-12-29 11:29:10

标签: c++ wrapper boost-thread

我目前正在开发一个用于boost线程的小包装器类,但我真的不知道睡眠功能是如何工作的,这是我到目前为止所做的:

BaseThread::BaseThread(){
    thread = boost::thread();
    bIsActive = true;
}

BaseThread::~BaseThread(){
    join();
}

void BaseThread::join(){
    thread.join();
}

void BaseThread::sleep(uint32 _msecs){
    if(bIsActive)
        boost::this_thread::sleep(boost::posix_time::milliseconds(_msecs));
}

这是我到目前为止实现它的方式,但我真的不明白静态this_thread :: sleep方法如何知道哪个线程要睡眠,例如我的线程包装器的多个实例是活动的。这是实施它的正确方法吗?

2 个答案:

答案 0 :(得分:17)

boost::this_thread::sleep将暂停当前线程。只有线程本身才能进入休眠状态。如果您想让线程休眠,请在帖子中添加一些检查代码或 use interruptions

更新:如果您使用带有最新标准库的c ++ 11编译器,您将可以访问std::this_thread::sleep_forstd::this_thread::sleep_until函数。但是,没有标准的中断机制。

答案 1 :(得分:2)

sleep始终影响当前线程(调用该方法的线程)。