<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                在網絡編程中,我們經常會遇到阻塞、非阻塞、同步、異步這兩組概念,許多人很容易混淆,現在就給大伙兒說說我對著兩組概念的理解。 ### 阻塞與非阻塞 主要和程序等待消息時的狀態有關,是`等待還是不等待`。 #### 1、阻塞 程序會阻塞在某一個函數,而不往下執行,就如掛在那里一樣,所有的其他業務也都不執行,為一直等到消息到來才往下執行。 阻塞只是塞住了當前線程,浪費了部分CPU資源,并不會塞住其他線程. #### 2、非阻塞 程序不會阻塞在某一個函數,不等待消息到來,立即返回,往下執行。 #### 舉例 TCP協議中的send,系統會為其分配一塊發送緩存區,假設現在總的緩存 區的大小為1000.,而緩存區里已經有了500個數據,這時調用send,發送1000個字節數據,這時如果在阻塞模式下,send的會先最多的數據放入緩存,直到緩存區滿,然后程序就會阻塞在那里,一直等到將所有數據全部發出去為止,而如果在非阻塞模式下,send的會先將最多的數據放入緩存之后,就馬上返回,剩余數據下回接著發送,不會卡在send函數中。 --- ### 同步和異步 其實是與消息通知機制有關的, #### 1、同步 發送消息,等待消息處理完后,才往下執行。就如MFC里的SendMessage(), #### 2、異步 發送消息,不等待消息處理完,就往下執行,讓后通過特定的接口或者事件,消息通知你事情完成了。如MFC里的PostMessage() --- 粗略的講了一下以上的兩個概念,估計大家會問,那么阻塞與同步,非阻塞與異步有啥區別,用例說明。 比如我們現在去銀行,你可以選擇兩種方式,排隊等待和取票等待。 排隊等待,你就得等前面所有人都辦理完了,才能辦理業務,此時如果在等待的過程中,你啥事都不能干,這時你就處于`阻塞`狀態了; 如果你還能一邊打電話,一邊喝飲料,看書,不過你還得時不時的抬頭看看,前面的人還有多少,啥時候輪到你,免的錯過辦理,這時你就是處于`同步`狀態。 也就是說,阻塞就是程序掛在那里,其他`一切事情都不能做`,直到當前事件返回為止,而同步得再原地等待消息,而與此同時,不影響其他業務的執行,體現在程序里就是其他線程的業務處理。 --- 如果你取票等待,那么你只要坐在椅子上,這時你可以做你想做的事情,比如聽聽歌,看看書,打打電話,而到你時,窗口會自動叫號通知你,這時你就處于`非阻塞`狀態。 如果此時你還覺得不過癮,想出去溜達溜達,那么你可以和大廳的工作人員說一下,我去哪里,待會到我了,到某某地方通知我一下,然后你就可以出去做你想做的事情,直到工作人員來叫你為止。這時你就是處于異步狀態。兩者結合起來就是所謂的異步非阻塞模式,這種由于效率很高,在網絡編程里經常被用到。
                  <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>

                              哎呀哎呀视频在线观看