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