计算机中 什么是同步执行和异步执行?
1
當您同步執行某項任務時,您將等待它完成,然后再轉到另一項任務。當您異步執行某項任務時,您可以在它完成之前轉移到另一個任務。
也就是說,在計算機的上下文中,這轉化為在另一個“線程”上執行一個進程或任務。線程是作為工作單元存在的一系列命令(代碼塊)。操作系統可以管理多個線程,并在切換到另一個線程之前為線程分配一塊(“片”)處理器時間,以使它能夠完成一些工作。在其核心(請原諒雙關語),一個處理器可以簡單地執行一個命令,它沒有一次做兩件事的概念。操作系統通過將時間片分配給不同的線程來模擬這種情況。
現在,如果在混合中引入多個核/處理器,那么事情實際上可以同時發生。操作系統可以將時間分配給第一個處理器上的一個線程,然后將相同的時間塊分配給不同處理器上的另一個線程。所有這些都是關于允許操作系統管理您的任務的完成,而您可以繼續您的代碼和做其他事情。
2
同步/異步與多線程無關。
同步,或同步意思是“連接”,或“依賴”在某種程度上。換句話說,兩個同步任務必須彼此了解,一個任務必須以依賴于另一個任務的方式執行,例如等到另一個任務完成后才開始。
異步意味著它們是完全獨立的,無論是在初始化還是在執行中,兩者都不能以任何方式考慮另一個。
同步(一個線程):1 thread -> |<---A---->||<----B---------->||<------C----->|同步(多線程):thread A -> |<---A---->| \ thread B ------------> ->|<----B---------->| \ thread C ----------------------------------> ->|<------C----->| 異步(一個線程):A-Start ------------------------------------------ A-End | B-Start -----------------------------------------|--- B-End | | C-Start ------------------- C-End | | | | | | | |V V V V V V 1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->| 異步(多線程):thread A -> |<---A---->|thread B -----> |<----B---------->| thread C ---------> |<------C--------->|任務A、B、C的起點和終點<, >人物。用豎直條表示的CPU時間片|從技術上講,同步/異步的概念真的與線程無關。雖然在一般情況下,發現異步任務運行在同一個線程上是不尋常的,但它是可能的(參見下面的示例),而且它是共同查找兩個或多個任務同步執行的步驟分開線.。不,同步/異步的概念獨樹一幟是否可以在其他(第一個)任務完成之前啟動第二個或后續任務,或者是否必須等待。僅此而已。在哪些線程(或多個線程)、進程、CPU,或者確切地說,任務是在什么硬件上執行的任務是無關的。事實上,為了說明這一點,我編輯了圖形以顯示這一點。
異步示例。在解決許多工程問題時,軟件被設計成將整個問題分成多個單獨的任務,然后異步執行。反演矩陣或有限元分析問題是一個很好的例子。在計算中,列表排序就是一個例子。例如,快速排序例程將列表分成兩個列表,并通過遞歸調用自己對每個列表進行排序。在上述兩個示例中,這兩個任務可以(而且經常是)異步執行。它們不需要放在單獨的線程上。即使是只有一個CPU的機器,也只能編碼一個執行線程,以便在第一個任務完成之前啟動第二個任務的處理。唯一的標準是一個任務的結果不需要作為另一個任務的輸入。。只要任務的開始時間和結束時間重疊(只有當兩個任務的輸出都不需要作為另一個任務的輸入時才有可能),無論使用多少線程,它們都是異步執行的。
同步示例。任何由多個任務組成的進程,其中的任務必須按順序執行,但必須在另一臺機器上執行(獲取和/或更新數據,從金融服務獲取股票報價等)。如果它位于一個單獨的機器上,那么它就位于一個單獨的線程上,無論是同步線程還是異步線程。
3
簡單類比解釋
同步執行
我的老板是個大忙人。他讓我寫代碼。我告訴他:好吧。我開始了,他像禿鷹一樣看著我,站在我身后,從我的肩膀上下來。我說:“伙計,WTF:為什么你不去做點什么,而我做完這件事呢?”
他說:“不,我.在這里等著直到你完成。“這是同步的。
異步執行
老板告訴我去做,而不是在那里等我的工作,老板去做其他的工作。當我完成我的工作后,我只需向我的老板匯報并說:“我受夠了!”這是異步執行。
(聽我的建議:永遠不要和你身后的老板一起工作。)
參考文章:異步執行與同步執行,這到底意味著什么?
總結
以上是生活随笔為你收集整理的计算机中 什么是同步执行和异步执行?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow教程 学习笔记 之
- 下一篇: tensorflow tf.enable