수색…
뮤텍스 잠금
Go에서 Mutex 잠금을 사용하면 한 번에 하나의 goroutine 만 잠글 수 있습니다.
import "sync"
func mutexTest() {
lock := sync.Mutex{}
go func(m *sync.Mutex) {
m.Lock()
defer m.Unlock() // Automatically unlock when this function returns
// Do some things
}(&lock)
lock.Lock()
// Do some other things
lock.Unlock()
}
Mutex
사용하면 동일한 리소스에서 작동하는 여러 동시 루틴과 관련된 경쟁 조건, 동시 수정 및 기타 문제를 피할 수 있습니다. Mutex.Unlock()
은 잠금 기능이있는 루틴뿐만 아니라 모든 루틴에서 실행할 수 있습니다. 또한 다른 루틴이 잠금을 유지하면 Mutex.Lock()
대한 호출이 실패하지 않습니다. 자물쇠가 풀릴 때까지 차단됩니다.
팁 : 뮤텍스 변수를 함수에 전달할 때마다 항상 포인터로 전달하십시오. 그렇지 않으면 뮤텍스의 목적에 위배되는 변수의 복사본이 생성됩니다. 이전 Go 버전 (<1.7)을 사용하는 경우 컴파일러는이 실수에 대해 경고하지 않습니다!
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow