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

최동혁님의 프로필 이미지
최동혁

작성한 질문수

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

고루틴 동기화 기초

몇가지 질문이 있습니다

작성

·

215

0

다음 강의에서 다루는지는 잘 모르겠지만 지금 강의에서 궁금한게 몇가지 있습니다.

1. wait()를 사용한 시점부터 아래 코드들이 일시정지인 상태로 진행이 되는 것으로 이해가 되는데, 그렇다면 mutex.Unlock()을 읽지 못해서 에러를 발생해야 맞는게 아닌가요 ? 궁금해서 Wait() 코드를 보니깐 아래처럼 나오더라구요. 그러면 Wait()가 동작하고 Unlock()이 동작하고 WaitList 추가한다음 Lock()을 걸고 제가 작성한 코드로 돌아와서 for문의 Lock()을 다시 거는것처럼 보이는데 이러면 오류가 발생하지 않나요 ???

2. Wait()로 일시정지를 했다면 이 순서같은 경우는 그냥 랜덤으로 동작하게 되는건가요? Signal로 특정 고루틴을 깨우는것이 불가능 한건가요 ? 

답변 2

0

최동혁님의 프로필 이미지
최동혁
질문자

답변감사합니다!

0

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

1. 오류가 발생하지 않습니다.

    초반부의 뮤텍스 부분을 다시 정독해 보시면 됩니다.

2. 아래 예제를 시간 나실 때 읽어보시면 도움이 되실 겁니다.(번역도 가능)

https://medium.com/@matryer/golang-advent-calendar-day-two-starting-and-stopping-things-with-a-signal-channel-f5048161018

최동혁님의 프로필 이미지
최동혁

작성한 질문수

질문하기