既然nodejs是單線程的,那么它怎么處理并發(fā),難道要排隊(duì)么
2 回答

飲歌長(zhǎng)嘯
TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
單線程解決高并發(fā)的思路就是采用非阻塞,異步編程的思想。簡(jiǎn)單概括就是當(dāng)遇到非常耗時(shí)的IO操作時(shí),采用非阻塞的方式,繼續(xù)執(zhí)行后面的代碼,并且進(jìn)入事件循環(huán),當(dāng)IO操作完成時(shí),程序會(huì)被通知IO操作已經(jīng)完成。主要運(yùn)用JavaScript的回調(diào)函數(shù)來(lái)實(shí)現(xiàn)。
多線程雖然也能解決高并發(fā),但是是以建立多個(gè)線程來(lái)實(shí)現(xiàn),其缺點(diǎn)是當(dāng)遇到耗時(shí)的IO操作時(shí),當(dāng)前線程會(huì)被阻塞,并且把cpu的控制權(quán)交給其他線程,這樣帶來(lái)的問(wèn)題就是要非常頻繁的進(jìn)行線程的上下文切換。
- 2 回答
- 0 關(guān)注
- 668 瀏覽
添加回答
舉報(bào)
0/150
提交
取消