zoukankan      html  css  js  c++  java
  • 杂乱,未屡清楚

    多线程用在 io 密集,多进程用在 cpu 密集为什么呢?

    自我理解一下,如有不对,请脑海删除自己所看及所想,哈哈哈哈

    IO密集的程序,说明很多程序在等待使用IO,那么用颗粒度较大的线程,可以减少程序的中断次数,所以IO密集的程序,用多线程较为合适,且保证程序尽可能的减少被中断

    CPU密集的程序,说明很多程序在等待使用CPU,用颗粒度较小的进程,切片轮换时间缩短,减少CPU排队时间,保证每个程序都可正常运行,防止使用线程模式一个程序长时间占用CPU,导致其他程序无法运行引起的性能问题

    因为CPU的工作频率远远快过和其连接的外部硬件,例如磁盘,所以CPU在IO的时候经常会需要等待外部硬件完成当前任务,完成之后,才能进行下一个任务,这种情况常常称为IO阻塞,即CPU直到等待IO操作返回前,不能继续运行。IO阻塞对于CPU强大的运算能力是一个巨大的浪费。
    多线程的底层机制是由操作系统实现的,当一个线程遇到IO阻塞时,例如读写文件,操作系统可能会暂时挂起该线程,从而让其他线程优先执行,也就是将多出来的时间片切分给其他的线程,直到等待该线程的IO操作返回,再重新调度该线程运行。
    所以在IO密集型任务中使用多线程可以大大的加速程序运行,即时在单核CPU上,这种加速主要就是利用了被浪费掉的阻塞时间。

  • 相关阅读:
    《掌握需求过程》读书笔记3
    《掌握需求过程》读书笔记2
    《掌握需求过程》阅读笔记1
    2017年秋季个人阅读计划 ---《掌握需求过程》第二版 pdf
    问题账户需求分析
    2017年秋季个人阅读计划
    《我们应当怎样做需求分析》阅读笔记
    软件工程概论课个人总结
    第二次冲刺-个人工作总结10
    第二次冲刺-个人工作总结09
  • 原文地址:https://www.cnblogs.com/xiaokuangnvhai/p/11193568.html
Copyright © 2011-2022 走看看