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上,这种加速主要就是利用了被浪费掉的阻塞时间。

  • 相关阅读:
    [Link]TCPDF组件
    MySql排名查询
    PHPUnit安装
    [Link]使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节
    同比和环比的计算
    jquery fullPage
    [转]php socket编程通信
    [转]抢先Mark!微信公众平台开发进阶篇资源集锦
    不越狱安装破解软件,iResign重签名方法
    【转】搜狗开源内部项目管理平台Cynthia意欲何为
  • 原文地址:https://www.cnblogs.com/xiaokuangnvhai/p/11193568.html
Copyright © 2011-2022 走看看