Python基礎複習(第五天)
阿新 • • 發佈:2020-12-31
併發程式設計
概念理解
1. 無論是並行和併發,在使用者看起來都是"同時"執行的,不管是程序還是執行緒,都只是一個任務而已,真正幹活的是cpu,cpu來做這些任務,一個cpu同一時刻只能執行一個任務 2. 併發並不是真正的並行,而是利用多道技術+單個cpu做出並行的效果 3. 如果想要真正同時執行,只有具備多個cpu才能實現並行 4. 程序的排程,分配給哪個cpu執行,由作業系統說了算 5. 記憶體中同時存入多道(多個)程式,cpu從一個程序快速切換到另外一個,使每個程序各自執行幾十或幾百毫秒,這樣,雖然在某一個瞬間,一個cpu只能執行一個任務,但在1秒內,cpu卻可以執行多個程序,這就給人產生了並行的錯覺,即偽併發,以此來區分多處理器作業系統的真正硬體並行(多個cpu共享同一個實體記憶體)
幾組比較重要的概念
同步:在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不會返回。 非同步:當一個功能呼叫發出後,呼叫者不能立刻得到結果 阻塞:當socket工作在阻塞模式的時候,如果沒有資料的情況下呼叫recv函式,則當前執行緒就會被掛起,直到有資料為止 非阻塞:指在不能立刻得到結果之前也會立刻返回,同時該函式不會阻塞當前執行緒 同步與非同步針對的是函式/任務的呼叫方式:同步就是當一個程序發起一個函式(任務)呼叫的時候,一直等到函式(任務)完成,而程序繼續處於啟用狀態。而非同步情況下是當一個程序發起一個函式(任務)呼叫的時候,不會等函式返回,而是繼續往下執行當,函式返回的時候通過狀態、通知、事件等方式通知程序任務完成 阻塞與非阻塞針對的是程序或執行緒:阻塞是當請求不能滿足的時候就將程序掛起,而非阻塞則不會阻塞當前程序