【发布时间】:2013-04-16 18:08:35
【问题描述】:
在我的计算机上,在 Windows 7 上运行,以下代码在 Visual C++ 2010 和 Boost 1.53 中编译,输出
no timeout
elapsed time (ms): 1000
使用 GCC 4.8 编译的相同代码 (online link) 输出
timeout
elapsed time (ms): 1000
我的看法是VC++输出不正确,应该是timeout。有没有人在 VC++ 中有相同的输出(即no timeout)?如果是,那么这是boost::condition_variable的Win32实现中的错误吗?
代码是
#include <boost/thread.hpp>
#include <iostream>
int main(void) {
boost::condition_variable cv;
boost::mutex mx;
boost::unique_lock<decltype(mx)> lck(mx);
boost::chrono::system_clock::time_point start = boost::chrono::system_clock::now();
const auto cv_res = cv.wait_for(lck, boost::chrono::milliseconds(1000));
boost::chrono::system_clock::time_point end = boost::chrono::system_clock::now();
const auto count = (boost::chrono::duration_cast<boost::chrono::milliseconds>(end - start)).count();
const std::string str = (cv_res == boost::cv_status::no_timeout) ? "no timeout" : "timeout";
std::cout << str << std::endl;
std::cout << "elapsed time (ms): " << count << std::endl;
return 0;
}
【问题讨论】:
标签: c++ multithreading boost boost-thread