這是一個術語,當我提到實時處理語言時,我會一次又一次地看到它。在這個特殊情況下,我正在閱讀node.js主頁,它有這樣的引用:什麼是阻塞功能?
「在其他系統中始終存在阻止調用來啓動事件循環。」
什麼是阻塞呼叫?
這是一個術語,當我提到實時處理語言時,我會一次又一次地看到它。在這個特殊情況下,我正在閱讀node.js主頁,它有這樣的引用:什麼是阻塞功能?
「在其他系統中始終存在阻止調用來啓動事件循環。」
什麼是阻塞呼叫?
停止腳本執行直到它結束的函數。
例如,如果我在我的語言中的函數,用於寫入文件,像這樣:
fwrite(file, "Contents");
print("Wrote to file!");
一旦該文件已被寫入到磁盤的print
聲明只會被執行。整個程序是停止在這條指令。這是不顯着足夠小寫,但是想象一下我有一個巨大的BLOB寫入文件,一個花了很多秒:
fwrite(file, blob);
print("Wrote to file!");
的print
聲明只,書寫幾秒鐘後執行,整個程序將在那段時間停止。在Node.js中,這個東西異步完成,使用事件和回調。我們的例子將成爲:
fwrite(file, blob, function() {
print("Wrote to file!");
});
print("Do other stuff");
當第三個參數是一個函數,一旦該文件已被寫入到被調用。位於寫入函數之後的print
語句將在之後立即調用,無論文件是否已被寫入。因此,如果我們寫一個足夠龐大的BLOB,輸出可能是這樣的:
Do other stuff
Wrote to file!
這使得applictions非常快速,因爲你不是在客戶端消息,文件寫或其他等待。您可以繼續以並行方式處理數據。這被Node.js的許多優點所考慮。
var block = function _block() {
while(true) {
readInputs();
compute();
drawToScreen();
}
}
阻塞函數基本上是永久計算的。這就是阻止的意思。
其他攔截功能會等待IO發生
非阻塞IO系統是指一個函數開始一個IO動作,然後進入空閒狀態,然後處理IO操作的結果,當它發生。
它基本上是線程閒置和睡眠之間的區別。
阻塞調用是一種不允許處理繼續進行直到它返回到調用線程 - 這也稱爲同步調用。異步另一方面意味着線程(和代碼)可以同時執行(併發)。