我何时必须使用io_service::strand
?
从documentation来看,当我想要阻止多个处理程序同时执行时,我似乎需要它:
io_service :: strand类提供发布和分派的功能 处理程序,保证这些处理程序都不会执行 同时
据我所知,如果我有多个线程在同一个run
对象上调用io_service
,就会发生这种情况。
所以,从这个角度来看,使用strand
的唯一合理方式似乎是当我们在内部有一些共享内存时,我们的处理程序传递给io_service::post
函数,我们不希望出于某种原因在其中使用任何同步原语,如boost::mutex
。我是对的吗?
或者两个线程同时调用io_service
会有内部io_service::run
问题吗?