我刚刚浏览了 asio聊天服务器示例。我的问题是关于他们对该io_service.run()
功能的使用。该io_service.run()
函数的文档说:
run() 函数一直阻塞,直到所有工作完成并且没有更多的处理程序要分派,或者直到 io_service 已停止。多个线程可以调用 run() 函数来建立一个线程池,io_service 可以从中执行处理程序。在池中等待的所有线程都是等效的,io_service 可以选择其中任何一个来调用处理程序。只有在调用 reset() 之后,run() 函数才可以安全地再次调用。
它说 run 函数将返回,我假设当它返回时,网络线程会停止,直到再次调用它。如果这是真的,那么为什么不在循环中调用 run 函数,或者至少不给它自己的线程?这个io_service.run()
功能对我来说几乎是个谜。