0514-86177077
9:00-17:00(工作日)
詳解 進程、線程和協程的區別
首先,給出“進程、線程和協程”的特點:
接下來,以一個形象的例子,進一步講述“進程、線程和協程”三者之間的區別:
假設有一個單核的操作系統,系統上沒有其它的程序需要運行,現有兩個線程 A 和 B,A 和 B 在單獨運行時都需要 10 秒來完成自己的任務,而且任務都是運算操作,線程 A 和 B 之間沒有競爭和共享數據的問題。現在讓 A 和 B 兩個線程并行,則操作系統會不停的在 A 和 B 兩個線程之間切換,達到一種偽并行的效果。
如果操作系統切換的頻率是每秒一次,切換的成本是 0.1 秒(主要是棧切換),則總共需要 20 + 19 * 0.1 = 21.9 秒;如果使用協程的方式,可以先運行協程 A,A 結束的時候讓位給協程 B,只發生一次切換,則總共需要 20 + 1 * 0.1 = 20.1 秒。如果操作系統是雙核的,而且線程是標準線程,那么線程 A 和 B 可以達到真的并行,則總時間為 10 秒;而協程的方式仍然需要 20.1 秒的時間。
感謝閱讀,希望能 幫助到大家,謝謝大家對本站的支持!
標簽:南昌 景德鎮 文山 鹽城 黔南 宣城 東莞 桂林
上一篇:Base64編碼的深入認識與理解
下一篇:關于Git遠程與本地沖突的解決方法
Copyright ? 1999-2012 誠信 合法 規范的巨人網絡通訊始建于2005年
蘇ICP備15040257號-8