首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11 std::async回调

C++11 std::async回调
EN

Stack Overflow用户
提问于 2015-03-10 00:59:54
回答 2查看 3.2K关注 0票数 1

我想实现一个查询数据库并异步执行查询的对象。

假设我们有一个要查询的对象A,它使用对象B。A调用B的executeQuery方法,然后开始执行其他任何操作。B的ExecuteQuery方法是异步的,对于quini A是非阻塞的。当查询的结果准备好时,我希望它在B中通过回调通知给A,这样A就可以只在准备好的时候读取结果。

在C ++ 11中实现此机制的最佳方式是什么?

我用std ::async尝试过,但是为了在std ::future中读取结果,我希望在std ::future已经包含结果时接收一个回调,从而避免我的调用成为阻塞。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-01-31 17:02:07

当您有未来时,可以使用.wait()等待执行完成,或者可以使用boost::mutex在某个事件发生时向其他线程发出信号,然后让一些事件函数对其执行操作。

然而,我认为您可能需要老式的回调函数设置--只需将一个函数指针传递给ExecuteQuery函数,然后让它调用它

票数 0
EN

Stack Overflow用户

发布于 2019-01-15 12:46:07

您可以将一个指针传递给函数并执行它。

或者将std::future与std::async一起使用

你应该使用wait_for函数而不是wait。并检查结果是否准备就绪。

你也可以在异步函数结束时设置原子布尔值。并在主线程中检查这个布尔值。

https://en.cppreference.com/w/cpp/thread/future/wait_for

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28947681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档