簡體   English   中英

中斷驅動與事件驅動的I / O模型

[英]Interrupt driven vs Event Driven I/O model

在閱讀Node JS時,定義說I / O模型是事件驅動的。 這與多線程環境中的中斷有何不同? 在多線程環境中,當I / O操作完成時,會生成一個中斷,並且等待線程現在被推入讀取運行狀態。 在Node Js中,基於I / O完成后拋出的事件,回調處理程序被推送到事件Queue。

為什么兩者不同?

我不確定我是否理解這個問題,但我理解......

這兩個概念的不同之處在於它們適用於不同級別的處理。 事件的使用級別(系統/代碼)高於中斷,后者發生在較低級別(CPU)。 因此,即使中斷確實發生在CPU級別,nodejs也會抽象它們(使用單獨的I / O線程),如果已定義,它將執行回調。 多線程環境(例如Java)的作用是暫停和恢復線程。 這與CPU級中斷不同。 Java確實讓程序員實現了這樣的中斷:

for (int i = 0; i < importantInfo.length; i++) {
    // Pause for 4 seconds
    try {
        Thread.sleep(4000);
    } catch (InterruptedException e) {
        // We've been interrupted: no more messages.
        return;
    }
    // Print a message
    System.out.println(importantInfo[i]);
}

但這根本不像CPU中斷或nodejs事件/回調。

即使nodejs被稱為單線程,它確實使用多個線程,但是它只使用一個主線程,該線程旨在花費很少的時間在CPU上並將其他IO或CPU密集型任務傳遞給其他任務,因此可能准備好處理下一個(通常是http)請求

一些參考鏈接:

http://www3.ntu.edu.sg/home/ehchua/programming/java/J5e_multithreading.html

http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html

中斷和事件之間的區別

https://softwareengineering.stackexchange.com/questions/298493/nodejs-like-interrupt-handlers

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM