Multithreading boost asio是否按顺序调用异步处理程序

Multithreading boost asio是否按顺序调用异步处理程序,multithreading,thread-safety,boost-asio,Multithreading,Thread Safety,Boost Asio,如果我在一个独立的线程上启动asio定时器和接收到我的主线程,处理程序是否可以同时运行?我假定没有,并且独立的线程按顺序调用事件,即使它们同时准备好了。要同时调用处理程序,asio必须创建自己的(第三个)线程,甚至中断一个处理程序以运行另一个处理程序。我找不到说明将按顺序调用处理程序的文档,即使这似乎是可能的。如果多个线程正在为io\u服务的事件循环提供服务,例如调用的线程池,那么处理程序可能会并发执行。另一方面,如果只有一个线程为io_服务提供服务,那么可以确保回调处理程序不会像Boost一样

如果我在一个独立的线程上启动asio定时器和接收到我的主线程,处理程序是否可以同时运行?我假定没有,并且独立的线程按顺序调用事件,即使它们同时准备好了。要同时调用处理程序,asio必须创建自己的(第三个)线程,甚至中断一个处理程序以运行另一个处理程序。我找不到说明将按顺序调用处理程序的文档,即使这似乎是可能的。

如果多个线程正在为
io\u服务的事件循环提供服务,例如调用的线程池,那么处理程序可能会并发执行。另一方面,如果只有一个线程为
io_服务提供服务,那么可以确保回调处理程序不会像Boost一样并发运行。Asio保证回调处理程序只能在当前调用
io_服务::run*()
的线程中执行。Boost.Asio教程可能会提供有关此主题的更多见解。

Tanner,感谢您的回答我现在很高兴我的猜测是正确的。我查看了教程,但仍然找不到一个线程中的一次运行将按顺序运行处理程序的文档。你能给我指一下文本吗?@Ant第二段的最后一行:“只从一个线程调用
io\u service::run()
,确保回调处理程序不能同时运行。”非常感谢。我看不见。我现在很快乐!