【发布时间】:2018-11-22 08:18:02
【问题描述】:
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 秒后终止程序。但是,该程序正在冻结。
【问题讨论】:
-
sleep以秒为单位获取参数。所以你的程序进入休眠状态500秒。可能你的意思是usleep。 -
检查你的假设:
man 3 sleep -
顺便说一句:
bb.get()将阻塞你的主线程,直到未来完成或毁掉。循环调用这个方法是没有意义的。