動機:希望加深對於golang concurrency的理解 去年,我也報名了ithome鐵人賽。當初帶著滿腔熱誠,想要透過連續的寫作分享知識。然而,生活總是充...
Concurrency 與 Parallelism 的深入探討:從差異到應用 我們常常聽到兩個詞:Concurrency(併發)與 Parallelism(平行...
Race Condition 當多個執行緒或goroutine訪問和操作相同的數據,而其最終的操作結果取決於執行的時序,可能導致不可預期或不一致的結果。 想像一...
死鎖(Deadlock):死鎖是所有併發進程(concurrent process)都在彼此等待的狀態。在這種情況下,如果沒有外部干預,程式將永遠不會恢復。 如...
CSP (Communicating Sequential Processes) CSP(Communicating Sequential Processes)...
Goroutine goroutine 是 Go 語言的輕量級執行緒。當你使用 go 關鍵字啟動一個函數時,該函數將在一個新的 goroutine 中非同步地運...
Sync是golang蠻常使用的package 第一個例子是WaitGroup,原始碼的註解寫得很清楚,總之透過WaitGroup可以控制goruotine的運...
Channel Channel,即通道,衍生自Charles Antony Richard Hoare的CSP併發模型,在Go語言中具有極其重要的地位。雖然它可...
select select 在 Go 語言中用於處理多個通道操作,它允許程序等待多個通道操作,然後執行第一個可以完成的操作。如果有多個操作都可以執行,則會隨機選...
Confinement pattern 這種模式的主要目的是確保資料只在一個 goroutine 中被訪問,從而避免了競爭條件和其他並發相關的問題。 封閉模式大...