一、不似半桶水的大陆人,台湾人写的,十一个专题,循序渐进,非常细腻,很好理解;他把有关io_service/io_service::work等关键概念的缘由点明了。访问 http://dorgonman.net76.net/blog/?s=ASIO 或者访问 http://dorgonman.net76.net/blog/%E6%B8%AC%E8%A9%A6
集中如下。请反序阅读,亦即从24读到12
12. [Boost] ASIO學習筆記:network basic– UDP Server (0)
13. [Boost] ASIO學習筆記:network basic– TCP Server (0)
15. [Boost] ASIO學習筆記:network basic - client (0)
16. [Boost] ASIO學習筆記:使用strand來serializing thread (0)
17. [Boost] ASIO學習筆記:post and dispatch (0)
18. [boost] ASIO學習筆記:Sync/Async、Blocking/Non-Blocking IO (0)
19. [Boost] ASIO學習筆記:thread及Synchronization (0)
20. [Boost] ASIO學習筆記:bind and ASIO (0)
22. [Boost] ASIO學習筆記:thread (1)
23. [Boost] ASIO學習筆記:初探io_service (0)
24. [Boost] ASIO學習筆記:hello_world (0)
二、如果想理解ASIO,最好有有关“协程/coroutine”的背景知识,给链接如下:《C++ 协程与网络编程》、《基于协程的并发框架orchid简介》、《协程和异步》、《协程、线程和执行上下文》、《谈谈协程和C语言的协程》
三、看看《Boost.Asio的使用技巧》, 这里有句话,说明了io_service和io_service::work之间的关系:"
work
类用于通知io_service
是否可以结束,只要对象work(io_service)
存在,io_service
就不会结束。所以work
类用起来更像是一个标识“。
四、我研究io_service的post和dispatch的区别的时候,最终到过这里《Boost asio io_service dispatch vs post
》,然后从2楼摸瓜到《To post or to dispatch?》,再后是不知是怎么摸到《Multithreading with ASIO》来,哈,也是说明io_service和io_service::work之间的关系的。从这里1楼摸到 https://gist.github.com/1393807,代码