4
在我的電腦,在Windows 7上,下面的代碼,在Visual C++ 2010與升壓1.53編譯運行,輸出不同的行爲:: VC下condition_variable ++和GCC
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;
}