Boost.Asio 作为线程池库


#1

只要稍微了解 Asio 的人都知道,在一个 io_service 上开几个线程后, 接下来就只要简单的使用 io_service.post() 即可投递一个闭包给线程去执行的. 这是一个天然的线程池.还可以同 io 操作复用你的线程.

停止发明垃圾的线程池实现吧


#2

有测试数据吗?不用重复创建线程和销毁?


#3

不知道楼主还在不在 我一直有个问题 io_service的run可以多个线程调用来实现一个线程池 但如果我想停止某个run的线程时应该如何处理 或者asio提供了在io_service内部开启多线程的方法?


#4

为啥要停止呢?


#5

就是想动态地改变线程池的运行线程数 虽然这样做好像并不是很必要 但既然io_service提供了可以多个线程调用run的方式 那也应该提供一个让某个run返回的方式吧 或者说多个线程调用run其实是不太asio不推荐的


#6

为什么不推荐?


#7

我理解,线程池就是为了解决大量线程资源重复申请和释放而无谓消耗资源的问题. 也就是说线程池对于client端来说,场景应该是线程个数固定(所以一般线程池都提供了线程个数作为线程池的构造函数入参),应该没什么场景需要使用过程中继续动态变更了把,如果需要动态变更,那就不用线程池好了.