我刚刚通过asio chat server example。我的问题是关于他们对io_service.run()
函数的使用。对于io_service.run()
函数的文档说:boost asio io_service.run()
的run()函数阻塞,直到所有的工作已经完成,并且没有 更多的处理程序被分派,或直至io_service对象已经 停止。多个线程可能会调用run()函数来设置一个线程池,io_service可以从中执行处理程序。在池中等待的所有 线程都是等效的,并且io_service 可以选择其中任何一个来调用处理程序。只有在调用 reset()后,才能安全地调用run()函数 。
它说,run函数将返回,和我假设,当它返回的网线停止,直到再次被调用。如果那是真的,那么为什么不是循环中调用的运行函数,或者至少给它自己的线程? io_service.run()
函数对我来说是非常神秘的。
检查还答案在这里: http://stackoverflow.com/questions/4705411/boostasio-io-service-run-vs-poll-or-how-do-i-integrate-boostasio-in -ma – serxio 2014-02-04 14:26:21