- Node.js 12實戰
- 趙榮嬌
- 381字
- 2022-07-27 19:18:56
2.5.3 同步/異步和阻塞/非阻塞
同步和異步是相對于操作結果來說的,是否會等待結果返回。阻塞和非阻塞是相對于線程是否被阻塞來說的。
有人也許會把阻塞調用和同步調用等同起來,實際上它們是不同的。其實,這兩者存在本質的區別,它們的修飾對象是不同的。阻塞和非阻塞是指進程訪問的數據如果尚未就緒,進程是否需要等待,簡單來說,這相當于函數內部的實現區別,也就是未就緒時是直接返回還是等待就緒。而同步和異步是指訪問數據的機制,同步一般指主動請求并等待IO操作完畢的方式,當數據就緒后,在讀寫的時候必須阻塞,異步則指主動請求數據后便可以繼續處理其他任務,隨后等待IO操作完畢的通知,這可以使進程在數據讀寫時也不阻塞。
對于同步調用來說,很多時候當前線程還是激活的,只是從邏輯上當前函數沒有返回而已。當工作在阻塞模式的時候,如果在沒有數據的情況下調用該函數,當前線程就會被掛起,直到有數據為止。
推薦閱讀
- 跟老齊學Python:輕松入門
- Building Minecraft Server Modifications
- Big Data Analytics
- Creating Mobile Apps with jQuery Mobile(Second Edition)
- 51單片機C語言開發教程
- 深入淺出React和Redux
- 好好學Java:從零基礎到項目實戰
- SQL Server 2008 R2數據庫技術及應用(第3版)
- Android應用開發實戰
- Scala Functional Programming Patterns
- 深入淺出 HTTPS:從原理到實戰
- 循序漸進Vue.js 3前端開發實戰
- WCF編程(第2版)
- 像程序員一樣使用MySQL
- Java無難事:詳解Java編程核心思想與技術