在 Asio 中,io_context
是事件循环的核心组件,负责管理异步操作的调度与执行。开发者可以通过 post
、dispatch
、defer
等方式向 io_context
提交任务。
post
:将任务放入队列中,保证它会被异步执行一次。dispatch
:如果调用线程是当前正在运行 io_context
的线程,则直接执行任务;否则等价于 post
。defer
:行为类似 dispatch
,但不会立即执行任务,而是等待当前回调结束后再执行。这个不是本文重点。
二、核心区别总结
特性 | post | dispatch |
---|
是否可能同步执行 | 否 | 可能 |
调用者是否阻塞 | 不会 | 不会 |
是 |