Promise和future,为什么主会成功退出呢?
Promise and future, why does the main exit successfully?
我开始在 C++11 中学习 promise 和 future,但我卡在了这里:
#include<iostream>
#include<future>
using namespace std;
void func(future<int> &ref)
{
cout << ref.get();
}
int main()
{
promise<int> prom;
future<int> fut = prom.get_future();
async(launch::deferred, func, ref(fut));
prom.set_value(100);
cout << "Exiting" << endl;
}
我的理解是,当我们有 async
和 launch::deferred
时,它不会启动新线程。
所以除非 ref.get()
执行 func
函数不会 return
这不会发生,因为 promise
是在那之后设置的。
但是我的代码成功退出了。我的理解哪里错了?
IDE: VS2013
deferred
异步调用只存储可调用对象和参数。
在 返回 future
.
上调用 .get()
之前,什么都没有发生
您丢弃了返回的 future
,因此您对 async
的调用基本上是空话。
没有其他因素阻止 main
完成,所以...
我开始在 C++11 中学习 promise 和 future,但我卡在了这里:
#include<iostream>
#include<future>
using namespace std;
void func(future<int> &ref)
{
cout << ref.get();
}
int main()
{
promise<int> prom;
future<int> fut = prom.get_future();
async(launch::deferred, func, ref(fut));
prom.set_value(100);
cout << "Exiting" << endl;
}
我的理解是,当我们有 async
和 launch::deferred
时,它不会启动新线程。
所以除非 ref.get()
执行 func
函数不会 return
这不会发生,因为 promise
是在那之后设置的。
但是我的代码成功退出了。我的理解哪里错了?
IDE: VS2013
deferred
异步调用只存储可调用对象和参数。
在 返回 future
.
.get()
之前,什么都没有发生
您丢弃了返回的 future
,因此您对 async
的调用基本上是空话。
没有其他因素阻止 main
完成,所以...