麻辣社区-四川第一网络社区

校外培训 高考 中考 择校 房产税 贸易战
阅读: 2302|评论: 0

[玄龙门阵] 程序猿修身之路(2)——CPU密集型操作

[复制链接]

发表于 2019-4-29 14:10 | 显示全部楼层 |阅读模式
       我曾经看过一篇帖子,异步解决的是IO密集型的操作,后来再实际开发中我觉得这个不够准确。异步同样可以解决CPU密集型操作,只不过场景有限而已。
      有一个前提:利用异步解决CPU密集型操作要求当前运行环境支持多线程才行,比如JavaScript这个语言,本质上它的运行环境是单线程的,所以对于CPU密集型操作,JavaScript会显得力不从心。

      异步解决CPU密集型操作一般情况下发生在同进程中,为什么这么说呢,如果发生在不同机器或者不同进程在很多情况下已经属于IO密集型的范围了。这里顺便提醒一下:IO操作可不简简单单是指磁盘的操作,素有的输入/输出操作都可以被广泛的称为IO。

       我觉得还是开举个栗子吧:

       在一个带有UI的软件上点击一个按钮,UI线程会发生操作行为,假如UI线程在执行过程中有一个计算比较耗时的操作,UI线程在同步操作的情况下回一直等待计算结果,在计算完毕之后才会继续执行剩余操作。在等待的这个过程中,呈现给用户的清卡鬼就是UI卡住了,俗称假死,带给用户的体验是非常不好的。在这种情况下,我们可以新启动一个线程去执行这个耗时的操作,当执行完毕,利用某种机制来通知原来线程,以便原来线程继续自己的操作。

       启动新线程执行CPU密集型操作利用的气势就是多线程的优势,如果是单核CPU,其实这种优势并不明显。
打赏

微信扫一扫,转发朋友圈

已有 0 人转发至微信朋友圈

   本贴仅代表作者观点,与麻辣社区立场无关。
   麻辣社区平台所有图文、视频,未经授权禁止转载。
   本贴仅代表作者观点,与麻辣社区立场无关。  麻辣社区平台所有图文、视频,未经授权禁止转载。
高级模式 自动排版
您需要登录后才可以回帖 登录 | 注册

本版积分规则

复制链接 微信分享 快速回复 返回顶部 返回列表 关闭