C++ 使用C++;11使用32位时间开启时

C++ 使用C++;11使用32位时间开启时,c++,c++11,visual-studio-2013,wait,chrono,C++,C++11,Visual Studio 2013,Wait,Chrono,我正在从事的项目要求我使用\u use\u 32BIT\u TIME\u T预处理器定义。所以我无法摆脱它。我还想使用C++11的chrono库进行定时等待。但是我不能让它工作。这是我正在编写的代码 std::mutex *lock = new std::mutex; std::condition_variable *cv = new std::condition_variable; std::unique_lock<std::mutex> ulock(*lo

我正在从事的项目要求我使用
\u use\u 32BIT\u TIME\u T
预处理器定义。所以我无法摆脱它。我还想使用C++11的
chrono
库进行定时等待。但是我不能让它工作。这是我正在编写的代码

    std::mutex *lock = new std::mutex;
    std::condition_variable *cv = new std::condition_variable;
    std::unique_lock<std::mutex> ulock(*lock);

    auto start = std::chrono::high_resolution_clock::now();
    cv->wait_for(ulock, std::chrono::milliseconds(40));
    auto finish = std::chrono::high_resolution_clock::now();
    cout << std::chrono::duration_cast<std::chrono::nanoseconds>(finish - start).count() << "ns\n";
std::mutex*lock=newstd::mutex;
std::条件变量*cv=新的std::条件变量;
std::唯一锁定锁定(*锁定);
自动启动=标准::时钟::高分辨率时钟::现在();
cv->等待(ulock,std::chrono::毫秒(40));
自动完成=标准::时钟::高分辨率时钟::现在();

cout显然Visual Studio存在一个bug:


我最终使用了
boost
而不是标准的C++11库。

我也遇到了同样的问题。我将wait_for改为wait_till,通过传递当前时间+您想要的任何延迟来解决这个问题

xtime xt;
xtime_get(&xt, TIME_UTC);
xt.sec += 10;
cvTimeout.wait_until(lkTimeout, &xt);

xtime xt;
xtime_get(&xt, TIME_UTC);
xt.sec += 10;
cvTimeout.wait_until(lkTimeout, &xt);