Drogon C++如何在没有阻塞的情况下等待未来



我刚刚了解了Drogon C++框架,它在许多地方使用回调来执行异步任务。这就像很久以前的javascript回调。Javascript现在有future.thenasync await

所以我的问题是,是否可以使用future->then来等待结果准备好。据我所知,std::future没有.then method。也许还有其他图书馆能够做到这一点?

使用当前回调,特别是用于数据库访问(对数据库的查询(是如此嵌套。

Qt等其他框架使用额外的共享状态来识别原始状态所有者的状态(例如finishedrunning等(。C++标准组件库引入了wait_for(const chrono::duration<Rep,Period>& rel_time)返回的值std::future_status

如果共享状态尚未就绪,则函数会阻塞调用线程并等待,直到它就绪或rel_time过去,以先发生的为准。

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

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

最新更新