首页 > 解决方案 > 本地对象超出范围后异步成员函数会发生什么?

问题描述

例如,如果我可以这样调用异步函数:

{
    Example example;
    example.asyncFuncInside();
}

由于对象在作用域之后被释放,它会对异步函数内部运行的正在进行的任务有任何风险吗?

标签: c++

解决方案


目前的形式无法回答这个问题。如果“异步”是分离的std::thread,则不会发生任何不好的事情。std::async另一方面,如果异步函数是使用 , 实现的,asyncFuncInside则将返回其std::future, 并且由于忽略了 dtorstd::future将阻塞。


推荐阅读