同步(Synchronous)和異步(Asynchronous)方法的區別


同步(Synchronous)和異步(Asynchronous)方法的區別

在講之前,我們先來看《Computer Organization》中對於同步和異步的一個例子:

同步讀寫和異步讀寫的區別:

同步讀寫:以讀為例

  1. 處理器在第一個時鍾周期將一個內存地址放到地址總線中,這一過程可能涉及到多條狀態總線。當地址線建立后,處理器發出一個信號。
  2. 處理器在第二個時鍾周期對內存發出讀的信號,內存中的一個模塊識別輸送過來的地址
  3. 一個時鍾周期后,該模塊將數據放到數據總線上
  4. 處理器讀取數據並取消讀的信號。

異步操作:以讀為例

  1. 處理器將地址和數據放到對應的線上,在等待這些數據建立之后,將這些數據和讀的命令一並發出
  2. 內存解碼地址,將數據放到地址總線上
  3. 等到地址通道建立好后,內存中的模塊通過ackownledged line(我不知道怎么翻譯恰當···)通知處理器數據已經加載完成了
  4. master讀取數據並取消讀信號
  5. 4導致內存中的模塊主動斷掉數據連線和ackownledged line
  6. ackownledged line斷掉之后,master消除地址信息

同步的一個問題在於,“all devices on a synchronous bus are tied to
a fixed clock rate, the system cannot take advantage of advances in device performance ”,這一點也好理解,同步讀要求內存在一個時鍾周期中准備好數據,也要求CPU在一個時鍾周期中准備好address line\signal line的標識,但是CPU和內存的速度差異是很大的,當然一個時鍾周期已經是最小單位了,但是如果再慢一點的設備呢,它就沒有辦法趕上這條bus這么快的速度了。而“With asynchronous timing, a mixture of slow and fast devices, using older
and newer technology, can share a bus ”,可以理解:由於異步方法是靠信號進行控制的,並不依賴於時鍾,所以使得各種設備都能在一條bus上運行。

貼上兩個其他博主的解釋:

同步和異步通常用來形容一次方法調用。

同步方法調用一旦開始,調用者必須等到方法調用返回后,才能繼續后續的行為。
異步方法調用更像一個消息傳遞,一旦開始,方法調用就會立即返回,調用者就可以繼續后續的操作。而,異步方法通常會在另外一個線程中,“真實”地執行着。整個過程,不會阻礙調用者的工作。
————————————————
版權聲明:本文為CSDN博主「半笙彷徨」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wang704987562/article/details/79827609

同步就是整個處理過程順序執行,當各個過程都執行完畢,並返回結果。是一種線性執行的方式,執行的流程不能跨越。一般用於流程性比較強的程序,比如用戶登錄,需要對用戶驗證完成后才能登錄系統。

異步則是只是發送了調用的指令,調用者無需等待被調用的方法完全執行完畢;而是繼續執行下面的流程。是一種並行處理的方式,不必等待一個程序執行完,可以執行其它的任務,比如頁面數據加載過程,不需要等所有數據獲取后再顯示頁面。

他們的區別就在於一個需要等待,一個不需要等待,在部分情況下,我們的項目開發中都會優先選擇不需要等待的異步交互方式,比如日志記錄就可以使用異步方式進行保存。
————————————————
版權聲明:本文為CSDN博主「shiyonghm」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/shiyong1949/article/details/80854656


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM