91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言中協程與線程的區別有哪些

發布時間:2023-02-03 09:51:42 來源:億速云 閱讀:155 作者:iii 欄目:編程語言

這篇文章主要介紹“go語言中協程與線程的區別有哪些”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“go語言中協程與線程的區別有哪些”文章能幫助大家解決問題。

區別:1、一個線程可以多個協程,一個進程也可以單獨擁有多個協程;2、線程是同步機制,而協程則是異步;3、協程能保留上一次調用時的狀態,線程不行;4、線程是搶占式,協程是非搶占式的;5、線程是被分割的CPU資源,協程是組織好的代碼流程,協程需要線程來承載運行。

線程

線程是指進程內的一個執行單元,也是進程內的可調度實體。線程是進程的一個實體,是 CPU 調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。

線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。

線程間通信主要通過共享內存,上下文切換很快,資源開銷較少,但相比進程不夠穩定容易丟失數據。

協程

協程是一種用戶態的輕量級線程,協程的調度完全由用戶控制。從技術的角度來說,“協程就是你可以暫停執行的函數”。協程擁有自己的寄存器上下文和棧。

協程調度切換時,將寄存器上下文和棧保存到其他地方,在切回來的時候,恢復先前保存的寄存器上下文和棧,直接操作棧則基本沒有內核切換的開銷,可以不加鎖的訪問全局變量,所以上下文的切換非常快。

協程與線程的區別

一個線程可以多個協程,一個進程也可以單獨擁有多個協程。

線程進程都是同步機制,而協程則是異步。

協程能保留上一次調用時的狀態,每次過程重入時,就相當于進入上一次調用的狀態。

線程是搶占式,而協程是非搶占式的,所以需要用戶自己釋放使用權來切換到其他協程,因此同一時間其實只有一個協程擁有運行權,相當于單線程的能力。

協程并不是取代線程,而且抽象于線程之上。線程是被分割的 CPU 資源,協程是組織好的代碼流程,協程需要線程來承載運行,線程是協程的資源,但協程不會直接使用線程,協程直接利用的是執行器(Interceptor),執行器可以關聯任意線程或線程池,可以使當前線程,UI線程或新建新程。

線程是協程的資源。協程通過 Interceptor 來間接使用線程這個資源。

關于“go語言中協程與線程的區別有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

朝阳市| 蒙城县| 拉萨市| 阜康市| 无为县| 廉江市| 庆安县| 金阳县| 大理市| 永靖县| 福泉市| 三台县| 章丘市| 如东县| 镇安县| 德安县| 拜城县| 湘乡市| 天津市| 登封市| 合山市| 美姑县| 富平县| 东台市| 泰安市| 扬中市| 台江县| 共和县| 顺昌县| 惠水县| 晋宁县| 长葛市| 宜黄县| 云龙县| 巴楚县| 略阳县| 永城市| 沧州市| 南江县| 丹凤县| 江阴市|