我想实现一个查询数据库并异步执行查询的对象。
假设我们有一个要查询的对象 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/