Goroutine Channel 理解筆記

此篇是用來紀錄我理解的 go routine 與相關範例代碼,藉由 ChatGPT 輔助理解和相關解釋,並配合實際嘗試與筆記來理解功能與特性。 Go routine ChatGPT 解釋: Go 語言的 goroutine 是一個非常輕量級的執行緒,它可以在一個程序中同時執行多個任務。和傳統的執行緒相比,goroutine 的開銷非常小,可以同時啟動數千甚至數萬個 goroutine,而不會造成系統資源的浪費和效能下降。Go 語言提供了 go 關鍵字來啟動一個新的 goroutine。當遇到 go 關鍵字時,Go 語言會在新的 goroutine 中執行該函數,而不會阻塞主執行緒的運行。這意味著我們可以同時執行多個任務而不需要等待前一個任務完成。 可以啟動多執行緒,也不會阻擋主程序的進程,以我理解的方式就是 Redis Queue 的運作,但一個是 service 一個則是內存功能,可能有些不太一樣的部分但如果是這樣理解會對我會比較好明白。就是執行到時不會阻塞主要流程。 相關範例代碼: package main import ( "fmt" "time" ) func count(name string) { for i := 1; i <= 5; i++ { fmt.Println(name, "count:", i) time.Sleep(time.Second) } } func main() { go count("goroutine") // 啟動 goroutine count("main") // 在主 goroutine 中執行 count } // output: // main count: 1 // goroutine count: 1 // main count: 2 // goroutine count: 2 // main count: 3 // goroutine count: 3 // main count: 4 // goroutine count: 4 // main count: 5 // goroutine count: 5 這邊會看到是交叉的出現計數,為什麼需要放入 time....

March 13, 2023 · Yish