강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

IJILKJ님의 프로필 이미지
IJILKJ

작성한 질문수

쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정

고루틴 동기화 기초

51분쯤에서 질문이 있습니다.

작성

·

152

0

51분쯤에 나오는 for문에서 i=0일 때 Lock을 걸고 채널에 777을 넣고 "goroutine waiting"구문이 프린트된 후에 

condition.Wait으로 멈추잖아요?

그리고 i=1로 넘어가는데 그럼 현재 Lock이 걸려있으니까 

i=1부터는 c<-777 코드부터 실행이 안되야하지않나요??

어떻게 실행되는건가요?

그리고 54분쯔음에 condition이 인자로 Mutex를 받아서 깨울때도 Mutex.Lock을 해줘야한다고 나와있는데 조금 더 자세히 설명해주실 수 있나요? 이 부분은 이해가 안가서요.

답변 1

0

좋은사람님의 프로필 이미지
좋은사람
지식공유자

안녕하세요.

Lock 이후에 제어권이 다른 goroutine 에 의해서 실행 됩니다.

변수 동기화만 처리되는 것입니다.

또 모든 고루틴을 wake 할 때는 signal, broadcast 등을 이용합니다.

관련 URL을 첨부해드립니다.

https://golang.org/pkg/sync/#Cond.Signal

IJILKJ님의 프로필 이미지
IJILKJ

작성한 질문수

질문하기