Go語言中Goroutine和Thread的區別。


Goroutine

Goroutine是可以在與其他goroutine一起獨立執行的方法/函式。Go語言中每個併發活動通常稱為goroutine。

Thread (執行緒)

執行緒是一個輕量級程序。它可以被視為執行一段程式碼的單元。作業系統管理執行緒。

以下是Goroutine和Thread之間的一些重要區別。

序號關鍵點GoroutineThread (執行緒)
1由誰管理Goroutine方法由Go語言執行時管理。執行緒由作業系統管理。
2硬體依賴性Goroutine獨立於硬體。執行緒依賴於硬體。
3通訊方式Goroutine使用通道作為通訊媒介。執行緒沒有簡單的通訊媒介。
4延遲Goroutine可以以低延遲與其他例程通訊。由於執行緒沒有通訊媒介,因此執行緒之間通訊延遲較高。
5IDGoroutine沒有任何執行緒本地儲存,也沒有唯一的ID。執行緒具有執行緒本地儲存和唯一的ID。
6排程Goroutine是協作式排程的。執行緒是搶佔式排程的。
7啟動Goroutine具有更快的啟動時間。執行緒具有更慢的啟動時間。
8Goroutine具有可增長的分段棧。執行緒沒有可增長的分段棧。

更新於:2019年11月28日

804 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.