我剛剛通過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