C++:Datastax CassFuture将提升Asio的可接受性

of1yzvn4  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(169)

我想将CassFuture对象从Datastax's C++ Driver转换为Boost Asio可感知对象。问题是,这种转换似乎会导致额外的开销,因为我实际上是在将一个未来包裹在另一个未来周围。有人有什么聪明的想法或有用的见解或最坏情况下的方法来处理这个问题,以最小限度地浪费计算工作吗?
我考虑过创建一个for循环的想法,当它检查future时,如果future没有产生结果(即没有错误或结果),它就简单地将优先级传递回io_context,但与将调度留给内置的io_context调度器相比,这似乎是低效和武断的。

jjhzyzn0

jjhzyzn01#

您可以使用回调处理程序。从链接页面:
回调可以设置为将来在请求完成时通知客户端应用程序。在等待多个异步操作时,使用将来回调是延迟最低的通知方法。
我还没有深入研究文档来找出哪些线程可以调用回调。如果你想完全与实现细节隔离,你总是可以在Asio服务上发布一个处理程序。
要完全兼容Asio(包括asio::use_futureasio::use_awaitable等),可以使用Completion Token模式实现异步初始化函数。

相关问题