• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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을 해줘야한다고 나와있는데 조금 더 자세히 설명해주실 수 있나요? 이 부분은 이해가 안가서요.

답변 1

답변을 작성해보세요.

0

안녕하세요.

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

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

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

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

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