Mic*_*kis 0 c++ visual-studio visual-studio-2019
我有一个线程函数可以返回外部 IP,并认为我可以将它用于std::future:
std::future<std::string> GetIP4;
GetIP4 = std::async([]() -> std::string
{
return GetWanIP();
});
Run Code Online (Sandbox Code Playgroud)
稍后在我调用的代码中GetIP4.get(),我得到一个std::string. 但是这会清空对象,所以下次我尝试get从另一个线程调用时它会崩溃。
从 cppreference 开始std::future<T>::get:
任何共享状态都被释放。
valid()是false在调用此方法之后。
就在之前提到
如果该行为是不确定的
valid()是false在调用此函数之前。
既然valid()must betrue调用get()并get()导致valid()变成false,那么不可能多次get()得到相同的future结果。
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |