V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Akagi201
V2EX  ›  问与答

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

  •  
  •   Akagi201 · 2014-06-05 15:12:37 +08:00 · 2267 次点击
    这是一个创建于 3835 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在libuv里看到了这句 Each blocking I/O operation is started in a separate thread (or in a thread pool).
    6 条回复    2014-06-18 20:48:26 +08:00
    mulog
        1
    mulog  
       2014-06-05 15:56:02 +08:00   ❤️ 1
    最近看了一下,感觉就是有一组(所谓的pool)预先创建好的线程,来执行某个任务。
    由于线程只创建一次,节省了创建销毁线程的开销。
    有点像一个producer/consumer模式的实现

    菜鸟的个人理解 欢迎拍
    Akagi201
        2
    Akagi201  
    OP
       2014-06-05 19:26:02 +08:00
    @mulog 恩, 想法类似
    sujin190
        3
    sujin190  
       2014-06-05 20:36:53 +08:00   ❤️ 1
    线程的创建启动对于一个只是执行较短的时间的任务来说太耗时了,如果你认为非常多但执行时间非常短,比如io什么的,其实线程切换都是一个十分巨大的开销
    isayme
        4
    isayme  
       2014-06-05 22:17:45 +08:00 via iPad   ❤️ 1
    预先创建一些线程,需要的时候可以快速使用,免去线程创建的开销。
    julyclyde
        5
    julyclyde  
       2014-06-18 18:15:33 +08:00
    @mulog 那线程的执行体是不是得是个大循环?要不然下一次咋开始呢?
    Akagi201
        6
    Akagi201  
    OP
       2014-06-18 20:48:26 +08:00
    @julyclyde 线程函数一般都是一个死循环吧, 很少退出, 不知道我理解错你的意思没有
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   997 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:25 · PVG 05:25 · LAX 13:25 · JFK 16:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.