더북(TheBook)
그림 1-5 고루틴과 채널

Go에서 동시에 처리해야 하는 작업은 고루틴으로 실행하고, 고루틴끼리 메시지를 주고받는 작업은 채널이라는 통로를 사용한다. 고루틴은 Go 프로그램 안에서 동시에 독립적으로 실행되는 흐름의 단위로, 스레드와 비슷한 개념이다. 하지만 스레드와 달리 고루틴은 수 킬로바이트 정도의 아주 적은 리소스에서 동작하므로 한 프로세스에 수천, 수만 개의 고루틴을 동작시킬 수 있다. 고루틴은 정보를 공유하는 방식이 아니라 서로 메시지를 주고받는 방식으로 동작한다. 그래서 Lock으로 공유 메모리를 관리할 필요가 없고 구현도 어렵지 않다.

Go의 병행 프로그래밍은 5장에서 더 자세히 설명한다.

그림 1-6 스레드와 고루틴
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.