我正在使用 boost::io_service
如下。
boost::io_service service;
service.post(boost::bind(...));
service.post(boost::bind(...));
service.post(boost::bind(...));
我想了解 post 是否正在对我的请求进行排队、保证执行顺序或是否可以删除请求。我在 boost 文档中搜索了答案,但没有找到答案。
最佳答案
不,默认情况下不保证执行顺序。
当回调被发布到 io_service
时,只要底层 io_service
正在被某个线程主动轮询,该回调就会在“适当的时间”被调用(使用以下函数之一:run()
、run_one()
、poll()
、poll_one()
).
一些可以发布的命令可能永远不会返回(例如套接字上的异步读取,其中永远不会发送任何数据)。这些类型的异步操作通常会向可以检查的回调提供错误代码。在某些情况下,此错误代码将提供有关操作成功(或失败)的详细信息。在上面引用的示例中,如果底层套接字已关闭,挂起的异步读取将执行其回调,并显示错误代码“操作中止”。
关于c++ - 是否 boost::io_service::post 队列请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831614/