소개
Go에서 공유 리소스에 대한 동시 액세스를 동기화하는 경우 , sync.Mutex 및 채널(chan)이라는 두 가지 기본 옵션을 사용할 수 있습니다. 둘 다 동기화를 달성할 수 있지만 적합성은 특정 시나리오에 따라 다릅니다.
Mutex와 Channel
Mutex(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!