【发布时间】:2014-04-10 14:49:11
【问题描述】:
假设我有以下代码:
#include <boost/chrono.hpp>
#include <boost/thread.hpp>
#include <iostream>
int main()
{
boost::thread thd([]{ std::cout << "str \n"; });
boost::this_thread::sleep_for(boost::chrono::seconds(3));
if (thd.try_join_for(boost::chrono::nanoseconds(1)))
{
std::cout << "Finished \n";
}
else
{
std::cout << "Running \n";
}
}
每次启动此程序时,MSVC-12.0 和 boost 1.55 都会给我不同的输出。例如,
str
Finished
str
Finished
str
Running
当我将 boost::chrono::nanoseconds 更改为 boost::chrono::microseconds 时,输出看起来与预期一样。
为什么?我究竟做错了什么?它是boost库中的错误吗?在 boost bug tracker 中是否有关于 in 的票?
提前致谢。
【问题讨论】:
标签: c++ boost boost-thread