9~15 줄을 보자. message 채널에서 메시지를 기다리고 있다. 원래대로라면 메시지를 기다리면서 블럭돼야 겠지만, default 문이 수행된다.
19~14 줄에서 message 채널에 메시지를 보내고 있다. 채널을 기다리는 대상이 없기 때문에 default문이 수행된다. default 문을 삭제하고 코드를 실행하면 fatal error: all goroutines are asleep - deadlock! 에러 메시지를 출력하면서 실행 실패한다. 메시지 채널을 기다리는 고루틴이 없어서 영원히 블럭되기 때문이다.
26 ~ 33 줄에서 처럼 두 개 이상의 채널을 비 봉쇄로 읽을 수 있다.
다음 예제 : Closing Channels
예제로 살펴보는 Go : Non-Blocking 채널 사용
Recent Posts
Archive Posts
Tags