关于线程池

小舆儿 2014-07-05 11:00:19
刚开始研究线程池。找了一些资料发现对线程池的使用理解的都有些刻板。不够精准。
我讲一下我的想法,如果有错误,希望有人能够指出来。

线程池只适合“出现阻塞,或者单个任务处理时间过长,需要多线程为多个任务平均分配资源”的大量任务。
处理时间较短,没有阻塞:单线程优于多线程,因为没有线程切换开销
处理时间长,没有阻塞:总的处理性能上单线程更优,但是多线程可以避免个别任务响应时间过长
处理中出现阻塞:处理中出现阻塞会浪费cpu时间,阻塞过程中更换线程执行其他任务。

...全文
280 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilaishuichina 2014-07-17
  • 打赏
  • 举报
回复
在多核环境下,单线程会造成cpu的浪费
赵4老师 2014-07-17
  • 打赏
  • 举报
回复
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
就想叫yoko 2014-07-17
  • 打赏
  • 举报
回复
看你的任务能不能真正的并行执行哦
spaceman10 2014-07-17
  • 打赏
  • 举报
回复
自己做个效率高的线程池也挺不容易的。
梦想照旧实现 2014-07-17
  • 打赏
  • 举报
回复
《百度百科:线程池》 何时不使用线程池线程: ●如果需要使一个任务具有特定优先级 ●如果具有可能会长时间运行(并因此阻塞其他任务)的任务 ●如果需要将线程放置到单线程单元中(线程池中的线程均处于多线程单元中) ●如果需要永久标识来标识和控制线程,比如想使用专用线程来终止该线程,将其挂起或按名称发现它
赵4老师 2014-07-17
  • 打赏
  • 举报
回复
引用 6 楼 lovesmiles 的回复:
多线程不一定要用线程池。这一点要明确。线程池是在多线程的基础上面。线程没有任务就将它阻塞,而不是消毁,有任务就在池中唤醒一个线程加载任务执行。 避免频繁的线程创建和消毁占用的时间 线程池和多线程是两个概念。
有够透彻!
勤奋的小游侠 2014-07-17
  • 打赏
  • 举报
回复
多线程不一定要用线程池。这一点要明确。线程池是在多线程的基础上面。线程没有任务就将它阻塞,而不是消毁,有任务就在池中唤醒一个线程加载任务执行。 避免频繁的线程创建和消毁占用的时间 线程池和多线程是两个概念。

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧