bool tf()
{
sleep(5000);
return true;
}
int main()
{
std::future<bool> bb = std::async(std::launch::async, tf);
bool b = false;
while(1)
{
if(b == true) break;
b = bb.get();
}
return 0;
}
为什么不工作? 我打算在5秒钟后终止程序。但是,该程序正在冻结。
答案 0 :(得分:1)
有比直接调用全局sleep
更好的替代方法。使用<chrono>
标头及其与std::this_thread::sleep_for
一起提供的字符串文字。这不太容易出错,例如
#include <chrono>
// Bring the literals into the scope:
using namespace std::chrono_literals;
bool tf()
{
std::this_thread::sleep_for(5s);
// ^^ Awesome! How readable is this?!
return true;
}
与您发布的其余代码片段一起使用,应该可以按预期工作。