久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      node的異步機(jī)制是基于什么

      node的異步機(jī)制是基于“事件”的,所有的I/O、網(wǎng)絡(luò)通信、數(shù)據(jù)庫(kù)查詢都以非阻塞的方式執(zhí)行,返回結(jié)果由事件循環(huán)來(lái)處理。Node在同一時(shí)刻只會(huì)處理一個(gè)事件,完成后立即進(jìn)入事件循環(huán)檢查后面事件。這樣CPU和內(nèi)存在同一時(shí)間集中處理一件事,同時(shí)盡量讓耗時(shí)的I/O等操作并行執(zhí)行。

      node的異步機(jī)制是基于什么

      本教程操作環(huán)境:windows7系統(tǒng)、nodejs16版,DELL G3電腦。

      NodeJS是單線程,單線程有以下好處:

      • 簡(jiǎn)單

      • 高性能,避免了頻繁的線程切換開銷

      • 占用資源小,因?yàn)槭菃尉€程,在大負(fù)荷情況下,對(duì)內(nèi)存占用仍然很低

      • 線程安全,沒有加鎖、解鎖、死鎖這些問題

      如何解決高并發(fā)?

      node使用異步IO和事件驅(qū)動(dòng)(回調(diào)函數(shù))來(lái)解決高并發(fā)這個(gè)問題。

      一般來(lái)說(shuō),高并發(fā)解決方案會(huì)提供多線程模型,為每個(gè)業(yè)務(wù)邏輯提供一個(gè)線程,通過(guò)系統(tǒng)線程切換來(lái)來(lái)彌補(bǔ)同步I/O調(diào)用的時(shí)間開銷。像apache,是一個(gè)請(qǐng)求一個(gè)線程。

      而NodeJS使用的是單線程模型,對(duì)所有I/O都采用異步的請(qǐng)求方式,避免頻繁的上下文切換,在NodeJS執(zhí)行的時(shí)候維護(hù)著一個(gè)事件隊(duì)列;程序在執(zhí)行時(shí)進(jìn)入事件循環(huán)等待下一個(gè)事件到來(lái),每個(gè)異步I/O請(qǐng)求完成后都會(huì)被推送到事件隊(duì)列中的等待執(zhí)行。

      NodeJS的異步機(jī)制是基于事件的,所有的I/O、網(wǎng)絡(luò)通信、數(shù)據(jù)庫(kù)查詢都以非阻塞的方式執(zhí)行,返回結(jié)果由事件循環(huán)來(lái)處理。如圖:

      node的異步機(jī)制是基于什么

      Node.js 進(jìn)程在同一時(shí)刻只會(huì)處理一個(gè)事件,完成后立即進(jìn)入事件循環(huán)檢查后面事件。這樣做的好處是,CPU和內(nèi)存在同一時(shí)間集中處理一件事,同時(shí)盡量讓耗時(shí)的I/O等操作并行執(zhí)行。對(duì)于低速連接攻擊,Node.js只是在事件隊(duì)列中增加請(qǐng)求,等待操作系統(tǒng)的回應(yīng),因而不會(huì)有任何多線程開銷,很大程度上可以提高 Web 應(yīng)用的健壯性,防止惡意攻擊。

      事件循環(huán)機(jī)制

      所謂事件循環(huán)是指NodeJS會(huì)把所有的異步操作使用事件機(jī)制解決,有個(gè)線程在不斷地循環(huán)檢測(cè)事件隊(duì)列。

      NodeJS中所有的邏輯都是事件的回調(diào)函數(shù),所以NodeJS始終在事件循環(huán)中,程序入口就是事件循環(huán)第一個(gè)事件的回調(diào)函數(shù)。事件的回調(diào)函數(shù)中可能會(huì)發(fā)出I/O請(qǐng)求或直接發(fā)射( emit)事件,執(zhí)行完畢后返回事件循環(huán)。事件循環(huán)會(huì)檢查事件隊(duì)列中有沒有未處理的事件,直到程序結(jié)束。NodeJS的事件循環(huán)對(duì)開發(fā)者不可見,由libev庫(kù)實(shí)現(xiàn),libev不斷檢查是否有活動(dòng)的、可供檢測(cè)的事件監(jiān)聽器,直到檢查不到時(shí)才退出事件循環(huán),程序結(jié)束。

      node的異步機(jī)制是基于什么

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)