C++如何在没有阻塞的情况下等待未来? 我刚刚了解Drgon C++框架,在很多地方它使用回调来完成异步任务。这就像很久以前的javascript回调一样。Javascript现在有future.then和异步wait

C++如何在没有阻塞的情况下等待未来? 我刚刚了解Drgon C++框架,在很多地方它使用回调来完成异步任务。这就像很久以前的javascript回调一样。Javascript现在有future.then和异步wait,c++,C++,所以我的问题是,是否可以使用future->然后等待结果准备好。从我读到的std::future没有.then方法。也许还有其他图书馆能做到这一点 使用当前回调(尤其是用于数据库访问查询)对数据库进行嵌套。其他框架(如Qt)使用额外的共享状态来标识原始状态所有者的状态,例如完成、运行等。。C++标准组件库引入了一个STD::WaTiBFuunistTimo::持续时间和ReliTime.< /P>返回的STUDURYY状态的值: 如果共享状态尚未就绪,则函数将阻塞调用线程,并等待它就绪或rel_

所以我的问题是,是否可以使用future->然后等待结果准备好。从我读到的std::future没有.then方法。也许还有其他图书馆能做到这一点


使用当前回调(尤其是用于数据库访问查询)对数据库进行嵌套。

其他框架(如Qt)使用额外的共享状态来标识原始状态所有者的状态,例如完成、运行等。。C++标准组件库引入了一个STD::WaTiBFuunistTimo::持续时间和ReliTime.< /P>返回的STUDURYY状态的值: 如果共享状态尚未就绪,则函数将阻塞调用线程,并等待它就绪或rel_time已过,以先发生的为准

您可以设置零超时,并确定未来是否准备就绪


我担心回调功能应该作为查询的一部分来实现,例如,要制作函数包装器,它将接受指向回调函数的指针,并在任务完成时调用它。在这种情况下,回调将在异步线程的上下文中调用。

请参阅。具有wait、wait_for和wait_直到成员,它们停止当前线程,直到异步操作完成。您可以继续这个流程。@interjay他的意思是std::async看起来像jscript特性,但是缺少方法。在C++中,我们没有STD的那个:然后实验AtdiaLi不确定阻塞,因为阻塞协程序意味着阻塞运行协进程的整个线程。@ ApIN如果创建了一个未来实例,那么,如果条件变量阻塞,如果已经达到绝对时间,则不会发生阻塞。但仍然需要检查共享状态。但如果没有保存future,则std::async将阻塞,因为如果这是共享状态对象的最后一个实例,则std::future::~future将阻塞。根据定义,未来是阻止同步的对象。所以从我的理解来看,我必须将未来的引用保存在某个地方,并且在结果准备好之前不要破坏它。我还有另一个线程,它循环所有未来,检查未来是否准备好了,准备好后我调用回调?类似的事情?@Apin如果浪费的话这是可能的,我从来没有尝试过这样做,更像是我总是在主线程中有一些固定的循环来检查结果是否准备好,并将其可视化。无论如何,vrendering主要是单线程。另一种方法可能是不使用async,而使用回调和std::promise。还有一个问题: