CafeM0ca

[Go] Mutex 본문

Programming/Go

[Go] Mutex

M0ca 2020. 12. 8. 21:16
반응형

tour.golang.org/concurrency/9

 

A Tour of Go

 

tour.golang.org

 

Go에서 Mutex에 대해 배워보자.

sync.Mutex에 있으며 Lock과 Unlock 2개의 메소드를 갖고 있다.

 

위 예제는 map의 값을 goroutine으로 병렬적으로 값을 증감시키는 예제다.

Mutex로 locking 하는 이유에 대해서는 cafemocamoca.tistory.com/93?category=1008201 에 있는 pdf를 참조하자. 자세히 써놨을 것이다.

 

Value 함수를 보자.

처음에 map 변수 c를 lock한다. 이는 주석에 써 있듯이 다른 고루틴의 접근을 방지하기 위해서다.

그리고 unlock은 defer를 통해 해준다. defer는 연산이 먼저 완료되도 함수가 끝날 때 적용시키는 문법이다.

만약 defer가 없었으면 어떘을까?

Value함수 밖에서 unlock을 해줬어야 한다.

반응형
Comments