Go語言中Goroutine和Thread的區別。
Goroutine
Goroutine是可以在與其他goroutine一起獨立執行的方法/函式。Go語言中每個併發活動通常稱為goroutine。
Thread (執行緒)
執行緒是一個輕量級程序。它可以被視為執行一段程式碼的單元。作業系統管理執行緒。
以下是Goroutine和Thread之間的一些重要區別。
| 序號 | 關鍵點 | Goroutine | Thread (執行緒) |
|---|---|---|---|
| 1 | 由誰管理 | Goroutine方法由Go語言執行時管理。 | 執行緒由作業系統管理。 |
| 2 | 硬體依賴性 | Goroutine獨立於硬體。 | 執行緒依賴於硬體。 |
| 3 | 通訊方式 | Goroutine使用通道作為通訊媒介。 | 執行緒沒有簡單的通訊媒介。 |
| 4 | 延遲 | Goroutine可以以低延遲與其他例程通訊。 | 由於執行緒沒有通訊媒介,因此執行緒之間通訊延遲較高。 |
| 5 | ID | Goroutine沒有任何執行緒本地儲存,也沒有唯一的ID。 | 執行緒具有執行緒本地儲存和唯一的ID。 |
| 6 | 排程 | Goroutine是協作式排程的。 | 執行緒是搶佔式排程的。 |
| 7 | 啟動 | Goroutine具有更快的啟動時間。 | 執行緒具有更慢的啟動時間。 |
| 8 | 棧 | Goroutine具有可增長的分段棧。 | 執行緒沒有可增長的分段棧。 |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP