執行緒的優點是減小了程式併發執行時的開銷,提高了作業系統的併發效能,缺點是執行緒沒有自己的系統資源,只擁有在執行時必不可少的資源,但同一程序的各執行緒可以共享程序所擁有的系統資源,如果把程序比作乙個車間,那麼執行緒就好比是車間裡面的工人。不過對於某些獨占性資源存在鎖機制,處理不當可能會產生「死鎖」。
第一步,協程a開始執行。
第二步,協程a執行到一半,進入暫停,通過yield命令將執行權轉移到協程b。
第三步,(一段時間後)協程b交還執行權。
第四步,協程a恢復執行。
協程不需要多執行緒的鎖機制。在協程中控制共享資源不加鎖,只需要判斷狀態就好了。 程序 執行緒與協程
程序的出現是為了更好的利用cpu資源使到併發成為可能。假設有兩個任務a和b,當a遇到io操作,cpu默默的等待任務a讀取完操作再去執行任務b,這樣無疑是對cpu資源的極大的浪費。聰明的老大們就在想若在任務a讀取資料時,讓任務b執行,當任務a讀取完資料後,再切換到任務a執行。注意關鍵字切換,自然是切換...
協程與程序,執行緒
我們通常所說的協程coroutine其實是corporateroutine的縮寫,直接翻譯為協同的例程,一般我們都簡稱為協程。在linux系統中,執行緒就是輕量級的程序,而我們通常也把協程稱為輕量級的執行緒即微執行緒。程序是核心排程,而協程是在使用者態排程,也就是說程序的上下文是在核心態儲存恢復的,...
程序 執行緒與協程
程序 執行緒和協程是三個在多工處理中常聽到的概念,三者各有區別又相互聯絡。程序,直觀點說,儲存在硬碟上的程式執行以後,會在記憶體空間裡形成乙個獨立的記憶體體,這個記憶體體有自己獨立的位址空間,有自己的堆,上級掛靠單位是作業系統。作業系統會以程序為單位,分配系統資源 cpu時間片 記憶體等資源 程序是...