怎么理解 thread pool? 线程池? 一直没有理解?

2014-06-05 15:12:37 +08:00
 Akagi201
在libuv里看到了这句 Each blocking I/O operation is started in a separate thread (or in a thread pool).
2209 次点击
所在节点    问与答
6 条回复
mulog
2014-06-05 15:56:02 +08:00
最近看了一下,感觉就是有一组(所谓的pool)预先创建好的线程,来执行某个任务。
由于线程只创建一次,节省了创建销毁线程的开销。
有点像一个producer/consumer模式的实现

菜鸟的个人理解 欢迎拍
Akagi201
2014-06-05 19:26:02 +08:00
@mulog 恩, 想法类似
sujin190
2014-06-05 20:36:53 +08:00
线程的创建启动对于一个只是执行较短的时间的任务来说太耗时了,如果你认为非常多但执行时间非常短,比如io什么的,其实线程切换都是一个十分巨大的开销
isayme
2014-06-05 22:17:45 +08:00
预先创建一些线程,需要的时候可以快速使用,免去线程创建的开销。
julyclyde
2014-06-18 18:15:33 +08:00
@mulog 那线程的执行体是不是得是个大循环?要不然下一次咋开始呢?
Akagi201
2014-06-18 20:48:26 +08:00
@julyclyde 线程函数一般都是一个死循环吧, 很少退出, 不知道我理解错你的意思没有

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/115943

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX