<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                Node保持了JavaScript在瀏覽器中單線程的特點。而且在Node中,JavaScript與其余線程是無法共享任何狀態的。單線程的最大好處是不用像多線程編程那樣處處在意狀態同步的問題,這里沒有死鎖的存在,也沒有線程上下文交換所帶來的性能上的開銷。 同樣,單線程也有它的弱點,這些弱點是學習Node過程中必須要面對的。積極面對這點,可以享受到Node帶來的好處,也能避免潛在問題,使其得以高效利用。單線程的弱點具體有一下3個方面: * 無法利用多核CPU。 * 錯誤會引起整個應用退出,應用的健壯性值得考研。 * 大量計算占用CPU導致無法繼續調用異步I/O。 像瀏覽器中JavaScript與UI共用一個線程一樣,JavaScript長時間執行會導致UI的渲染和響應被中斷。在Node中,長時間的CPU占用也會導致后續的異步I/O發不出調用,已完成的異步I/O的回調函數也會得不到及時執行。 最早解決這種大計算量問題的方案是Google公司開發的Gears。它啟用一個完全獨立的進程,將需要計算的程序發送給這個進程,在結果得出后,通過事件將結果傳遞回來。這個模型將計算量分發到其它進程上,以此來降低運算造成阻塞的幾率。后來,HTML5定制了Web Workers的標準,Google放棄了Gears,全力支持Web Workers。Web Workers能夠創建工作線程來進行計算,以解決JavaScript大計算阻塞UI渲染的問題。工作線程為了不阻塞主線程,通過消息傳遞的方式來傳遞運行結果,這也使得工作線程不能訪問到主線程中的UI。 Node采用了與Web Workers相同的思路來解決單線程中大計算量的問題:child_process 。 子進程的出現,意味著Node可以從容的應對單線程在健壯性和無法利用多核CPU方面的問題。通過將計算分發到各個子進程,可以將大量計算分解掉,然后再通過進程之間的事件消息來傳遞結果,這可以很好的保持應用模型的簡單和低依賴。通過Master-Worker的管理方式,也可以很好的管理各個工作進程,以達到更高的健壯性。 關于如何通過子進程來充分利用硬件資源和提升應用健壯性,這是一個值得探究的話題。怎樣才能使我們既享受到無憂無慮的單線程編程,又高效利用資源呢?請挪步到第9章。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看