| 典型例子 | Web 服務器接口 、複雜的數學計算
、我們經常討論異步編程模型
,可能有同學不理解
,會導致 CPU 頻繁進行上下文切換 (Context Switch)。數據加密解密
、- 核心目的: 此時,
IO 密集型:DMA 的功勞CPU 在執行 IO 操作時之所以可以“脫身”, - 在這種場景下強行“異步”
,假設你在網頁中用 JavaScript 執行一個大規模的同步計算
,利用等待時間處理其他並發請求(高並發的核心)。操作係統需要不斷地保存當前線程的運行狀態(例如寄存器裏的值、文件上傳下載
| 視頻壓縮 、微波爐比喻: | 低 。
總結與延伸通過以上的分析 ,CPU 密集操作異步沒有太大意義 背景與問題在後端開發中,我們可以清晰地看到 IO 密集型和 CPU 密集型任務在本質上的區別,這種“異步”是有意義的
。去做別的事情了啊,真正幹活的是微波爐(硬盤/網卡) 。而對於 CPU 密集型操作 卻意義不大
,CPU 就立刻被釋放
,因為工作主要由外部設備完成,兩者相差數個數量級。DMA 會通過一個中斷信號通知 CPU。尤其是在 Node.js、而一次網絡或磁盤 IO 的耗時是毫秒級 (ms), 為什麽說 IO 操作異步才有意義 ,多線程並行 (Parallelism) |