• 杂乱,未屡清楚


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

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

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

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

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

  • 相关阅读:
    Go入门笔记-14 EdgeX读取配置文件
    Go入门笔记-13 使用EdgeX日志输出
    Go入门笔记-12 输出unix时间戳
    Go入门笔记-11 Go 获取Linux系统CPU占用率
    htop使用
    Ubuntu子系统默认使用root登录
    函数参数传递数组
    c 'CRTSCTS' undeclared
    c 数组指针使用
    使用SD卡刷OpenWRT后,调整分区大小
  • 原文地址:https://www.cnblogs.com/xiaokuangnvhai/p/11193568.html
Copyright © 2020-2023  润新知