-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
51분쯤에서 질문이 있습니다.
21.03.28 20:09 작성 조회수 90
0
51분쯤에 나오는 for문에서 i=0일 때 Lock을 걸고 채널에 777을 넣고 "goroutine waiting"구문이 프린트된 후에
condition.Wait으로 멈추잖아요?
그리고 i=1로 넘어가는데 그럼 현재 Lock이 걸려있으니까
i=1부터는 c<-777 코드부터 실행이 안되야하지않나요??
어떻게 실행되는건가요?
그리고 54분쯔음에 condition이 인자로 Mutex를 받아서 깨울때도 Mutex.Lock을 해줘야한다고 나와있는데 조금 더 자세히 설명해주실 수 있나요? 이 부분은 이해가 안가서요.
답변을 작성해보세요.
0
좋은사람
지식공유자2021.03.29
안녕하세요.
Lock 이후에 제어권이 다른 goroutine 에 의해서 실행 됩니다.
변수 동기화만 처리되는 것입니다.
또 모든 고루틴을 wake 할 때는 signal, broadcast 등을 이용합니다.
관련 URL을 첨부해드립니다.
https://golang.org/pkg/sync/#Cond.Signal
답변 1