C++11 std::async 回调

标签 c++ c++11 callback stdasync

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

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

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

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

谢谢

最佳答案

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

但是我认为也许您需要老式的回调函数设置 - 只需将函数指针传递给您的 ExecuteQuery 函数,然后让它调用它

关于C++11 std::async 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28947681/

相关文章:

javascript - Node 回调中出现意外的 token 函数

javascript - 获取函数的回调以将值返回给父函数

c++ - 如何在复合类型上使用 Boost.Bind?

C++ 和带有国家符号的文件路径(可能用 utf8 编码)

c++ - 如何在QT画笔中设置不透明度

c++ - const ref 绑定(bind)到右值的内部资源

c++ - 为什么采用迭代器的构造函数要求元素是 EmplaceConstructible?

c++ - C++中原子变量的线程安全初始化

javascript - 使用回调在数组上执行函数

c++ - Eclipse c++ 如何使用现有的 makefile