|
|
1
13
这是一个古老的问题,但你从来没有真正得到关于跑步和投票的答案。 io_service::run将一直运行,只要有什么事情要做,例如等待截止时间计时器或IO完成通知等。这就是为什么有工作对象保持运行不退出的原因。 io_service::poll将只执行就绪的处理程序,并且在没有更多的处理程序可以调度之前不会返回。 换句话说,不同之处在于,运行将等待挂起的处理程序就绪,如计时器或IO完成通知,而轮询将在这种情况下返回。 如果要执行一些空闲处理,此行为很有用。 |
|
|
2
4
非阻塞与异步不同。池同步运行已准备好运行的处理程序,并返回而不阻塞和等待其他处理程序。 附加说明。 阻塞输入操作是指在没有找到输入数据时开始无休止等待的操作。考虑读操作,该操作应该从某个端口读取一个字节,但没有传入数据。在这种情况下,read调用挂起,仅在接收到字节时返回。如果没有输入信息,非阻塞读取操作将立即返回。 池操作是非阻塞的。它同步执行所有挂起的请求和返回。如果没有传入请求,轮询将立即返回。 |