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

标签 c++ wrapper boost-thread

我目前正在为 boost 线程开发一个小型包装类,但我并不真正了解 sleep 功能是如何工作的,这是我目前所得到的:

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 方法如何知道如果我的线程包装器的多个实例处于事件状态时要休眠哪个线程。这是实现它的正确方法吗?

最佳答案

boost::this_thread::sleep将休眠当前线程。只有线程本身可以进入休眠状态。如果要让线程休眠,请在线程中添加一些检查代码或 use interruptions

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

关于c++ - boost::thread sleep() 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974166/

相关文章:

c++ - 数据流 Qt 到标准 C++ 代码

c++ - 如何在同一选项卡中启动具有给定 URL 的浏览器

c++ - C++中运算符之间的逗号

c# - 实现接口(interface)还是 double 的泛型?

java - 除了性能之外,包装类型还有什么缺点吗?

c++ - 对 `boost::chrono::system_clock::now()' 的 undefined reference - Boost 和 cpp-netlib

c++ - 如何在 lambda 表达式中捕获单个类数据成员?

python - 使用 python 包装脚本在 upstart 中启动和停止 celery 进程

c++ - 将 pos_infin 作为超时传递给 timed_wait 时,年份超出有效范围

c++ - boost.thread - 一个简单示例中的访问冲突