官术网_书友最值得收藏!

2.5.3 同步/異步和阻塞/非阻塞

同步和異步是相對于操作結果來說的,是否會等待結果返回。阻塞和非阻塞是相對于線程是否被阻塞來說的。

有人也許會把阻塞調用和同步調用等同起來,實際上它們是不同的。其實,這兩者存在本質的區別,它們的修飾對象是不同的。阻塞和非阻塞是指進程訪問的數據如果尚未就緒,進程是否需要等待,簡單來說,這相當于函數內部的實現區別,也就是未就緒時是直接返回還是等待就緒。而同步和異步是指訪問數據的機制,同步一般指主動請求并等待IO操作完畢的方式,當數據就緒后,在讀寫的時候必須阻塞,異步則指主動請求數據后便可以繼續處理其他任務,隨后等待IO操作完畢的通知,這可以使進程在數據讀寫時也不阻塞。

對于同步調用來說,很多時候當前線程還是激活的,只是從邏輯上當前函數沒有返回而已。當工作在阻塞模式的時候,如果在沒有數據的情況下調用該函數,當前線程就會被掛起,直到有數據為止。

主站蜘蛛池模板: 昌平区| 锦屏县| 泗洪县| 尉犁县| 读书| 晋城| 永安市| 栖霞市| 顺昌县| 尚义县| 都江堰市| 尼勒克县| 易门县| 巴林右旗| 凌海市| 吉木乃县| 龙南县| 遂昌县| 石楼县| 四川省| 砀山县| 元江| 红河县| 东兴市| 巴林右旗| 达日县| 阿城市| 筠连县| 崇仁县| 辛集市| 思茅市| 汤原县| 兰溪市| 济源市| 嘉鱼县| 湘西| 青岛市| 晴隆县| 锦屏县| 克拉玛依市| 张掖市|