Go 채널에서 기다리는 고루틴은 OS 스레드 전체를 붙잡나요? 런타임의 park와 블로킹 호출을 구분해 보세요.
꼬리 질문을 독립 문항으로 확장했습니다. 원래 문항에서 맥락 보기 →
잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?
답변과 점검 포인트 펼치기답변 접기
01
구두 답변
정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.
채널 대기 고루틴은 런타임에 의해 park되어 다른 실행 가능한 고루틴이 스레드를 사용할 수 있습니다. 이는 일반적인 동기 OS 호출이 스레드를 막는 것과 다릅니다.
G는 고루틴, M은 OS 스레드, P는 Go 코드 실행 자원이라는 역할을 구분합니다. syscall·cgo·런타임 버전에 따라 스레드가 추가되거나 재사용될 수 있어 GOMAXPROCS를 전체 M 개수 상한으로 보지 않습니다. goroutine·thread·block profile과 실제 대기 경로를 대조합니다.
02
득점 포인트
이해가 드러나는 지점을 확인해 보세요.
- 채널 대기 고루틴은 런타임에 의해 park되어 다른 실행 가능한 고루틴이 스레드를 사용할 수 있습니다. 이는 일반적인 동기 OS 호출이 스레드를 막는 것과 다릅니다.
- goroutine·thread·block profile과 실제 대기 경로를 대조합니다.
03
감점 포인트
놓치기 쉬운 조건과 오해를 짚어 보세요.
- 다음 핵심 구분을 반대로 설명하거나 성립 조건을 생략한다: 채널 대기 고루틴은 런타임에 의해 park되어 다른 실행 가능한 고루틴이 스레드를 사용할 수 있습니다.
04
더 파고들 거리
하나 더 질문하며 이해의 범위를 넓혀 보세요.
득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.
원리부터 공부하고 싶다면
답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.