node 非阻塞式I O,單執行緒,非同步,事件驅動

2022-05-03 04:57:10 字數 829 閱讀 5558

1、單執行緒

不同於其他的後盾語言,node是單執行緒的,大大節約伺服器開支

node不為每個客戶建立乙個新的執行緒,僅使用乙個執行緒。通過非阻塞i/o以及

事件驅動機制,使其巨集觀上看是併發的,可以處理高併發。

2、非阻塞式i/o

1)當我們遭遇非同步時,可以通過以下方法解決:

①**函式

在使用非同步的函式時,追加提個**函式為引數,在使用時傳入所需要的**即可

const fs = require('fs')

//如何解決非同步問題?

//方法1:通過**函式解決

function

getcontent(cb)

cb(data)

})}getcontent((data) =>)

②使用events模組進行監聽

const fs = require('fs')

const events = require('events')

//如何解決非同步問題?

//方法2:通過node中events模組

//我們主要通過eventemitter物件來進行廣播和接收廣播

const eventemitter = new

events.eventemitter()

//監聽to_parent的廣播,只進行監聽

function

getcontent()

eventemitter.emit('data',data)

})}getcontent()

eventemitter.on('data', (data) =>)

理解單執行緒,非阻塞I O,中介軟體

單執行緒的理解是任務只能單個單個的處理,比如說 1 2 a,2 3 b,3 4 c。單執行緒就是先算出a,再算出b,接著算c。而多執行緒,假如是4執行緒,它就可以同時算出a b c。單執行緒的好處就是易於程式設計,不需要考慮太多狀況,缺點是效率低。多執行緒的好處是效率高,效能高,但並不是所有的運算都...

多執行緒同步I O和單執行緒非同步I O

2014 08 24 同步i o與非同步i o 執行緒在執行中如果遇到磁碟讀寫或網路通訊 統稱io操作 通常要耗費較長的時間,這時os會剝奪此執行緒的cpu控制權,使其暫停執行,同時將資源讓給其他的工作執行緒,這種執行緒排程方式稱為阻塞。當i o操作完畢時,作業系統將這個執行緒的阻塞狀態解除,恢復其...

Java IO 阻塞 非阻塞式IO 同步 非同步IO

同步 synchronous io和非同步 asynchronous io,阻塞 blocking io和非阻塞 non blocking io分別是什麼,到底有什麼區別?這個問題其實不同的人給出的答案都可能不同,比如wiki,就認為asynchronous io和non blocking io是乙...