在 boost::asio 中发布和调度有什么区别?
What is the difference between post and dispatch in boost::asio?
我正在尝试使用boost:asio库来创建线程池。官方文件说:
dispatch :请求io_service调用给定的处理程序。
post:请求io_service调用给定的处理程序并立即返回。
有人可以解释一下这两者有何不同吗?
区别在于dispatch
可以在它内部运行handler
(传递给它的CompletionHandler
(,这意味着您将等待它完成,如果它完成,在函数返回之前。 另一方面,post
不会自行运行handler
并立即返回到呼叫站点。
因此,dispatch
是潜在的阻塞调用,而post
是非阻塞调用。
>Post
确保调用 post 的线程不会立即尝试处理任务。
https://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/reference/io_service/post.html
但不允许io_service从内部调用处理程序 此函数。
Dispatch 不作这样的承诺;并且可以在函数返回时完成。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- 如何在c++中实现处理器调度模拟器
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在 boost::asio 中发布和调度有什么区别?
- 究竟发生了什么,我们需要在 c++ 中双重调度/访客
- C++中的标签和枚举调度有什么区别
- C++动态调度和后期绑定有什么区别
- C++中动态调度的规则是什么?
- 在后台线程上创建的调度程序未关闭时会发生什么情况?如何确保调度程序已正确关闭