簡介
在Go 中同步並發存取共享資源時,有兩個主要選項可用:sync.Mutex 和通道(chan)。雖然兩者都可以實現同步,但其適用性取決於特定場景。
互斥量與通道
互斥量(sync.Mutex):
通道(chan):
何時使用互斥體
範例:
var count int var m sync.Mutex func increment() { m.Lock() defer m.Unlock() count++ }
var ball *Ball var m sync.Mutex func player(name string) { for { m.Lock() ball.hits++ fmt.Println(name, ball.hits) time.Sleep(100 * time.Millisecond) m.Unlock() } }
var cache map[string]interface{} var m sync.Mutex func get(key string) interface{} { m.Lock() defer m.Unlock() return cache[key] }
以上是Go 中的互斥體與通道:何時使用各自?的詳細內容。更多資訊請關注PHP中文網其他相關文章!