同步、異步、阻塞、非阻塞

同步VS異步

網絡通訊中的同步機制和異步機制是描述通訊模式的概念。服務器

  • 同步機制網絡

    • 發送方發送請求後,須要等待接收到接收方返回的響應後,才接着發送下個請求
    • 全部的請求在服務端獲得同步,發送方和接收方對請求的處理步調是一致的
  • 異步機制異步

    • 發送方發送請求後,不等待接收方響應這個請求,就繼續發送下個請求
    • 全部來自發送方的請求造成一個隊列,接收方處理完成後通知發送方

阻塞VS非阻塞

阻塞和非阻塞用來描述進程處理調用的方式,在網絡通訊中,主要指網絡套接字Socket的阻塞和非阻塞方式,而Socket的實質也就是IO操做。性能

  • 阻塞
    • 調用結果返回以前,當前線程從運行狀態被掛起,一直等到調用結果返回以後,才進入就緒狀態
  • 非阻塞
    • 若是調用結果不能立刻返回,當前線程也不會被掛起,而是當即返回執行下一個調用

在網絡通訊中,常常能夠看到有人將同步和阻塞等同、異步和非阻塞等同。事實上,這兩對概念有必定的區別,不能混淆。兩對概念的組合,就會產生四個新的概念,同步阻塞、異步阻塞、同步非阻塞、異步非阻塞。線程

同步阻塞

發送方向接收方發送請求後,一直等待響應;接收方處理請求時進行的IO操做若是不能立刻獲得結果,就一直等到返回結果後,才響應發送方,期間不能進行其餘工做。隊列

同步非阻塞

發送方向接收方發送請求後,一直等待響應;接收方處理請求時進行的IO操做若是不能立刻獲得結果,就當即返回,去作其餘事情,但因爲沒有獲得請求處理結果,不響應發送方,發送方一直等待。一直到IO操做完成後,接收方得到結果響應發送方後,發送方纔進入下一次請求過程。進程

異步阻塞

發送方向接收方發送請求後,不用等待響應,能夠接着進行其餘工做;接收方處理請求時進行的IO操做若是不能立刻獲得結果,就一直等到返回結果後,才響應發送方,期間不能進行其餘工做。同步

異步非阻塞

發送方向接收方發送請求後,不用等待響應,能夠繼續其餘工做;接收方處理請求時進行的IO操做若是不能立刻獲得結果,也不等待,而是立刻返回去作其餘事情。當IO操做完成之後,將完成狀態和結果通知接收方,接收方再響應發送方。請求

參考資料

《Nginx高性能Web服務器詳解》通信

相關文章
相關標籤/搜索