Go

Goroutine 기초

Goroutine, go 키워드, sync.WaitGroup, runtime.GOMAXPROCS, goroutine 누수

20 면접 질문·
Junior
1

Go에서 goroutine이란 무엇입니까?

답변

goroutine은 다른 함수와 동시에 실행되는 함수로, OS가 아닌 Go 런타임이 관리합니다. OS 스레드(수 MB)에 비해 매우 가볍습니다(초기 스택이 수 KB). Go 스케줄러는 수천, 심지어 수백만 개의 goroutine을 제한된 수의 OS 스레드에 멀티플렉싱할 수 있어 Go에서 동시성을 매우 쉽게 다룰 수 있습니다.

2

Go에서 새로운 goroutine을 시작하려면 어떻게 합니까?

답변

go 키워드 뒤에 함수 호출을 붙이면 새로운 goroutine이 시작됩니다. 예를 들어 'go myFunction()' 또는 익명 함수의 경우 'go func() { ... }()' 와 같이 작성합니다. goroutine은 호출하는 코드와 병렬로 즉시 실행됩니다. 주의: main 함수는 실행한 goroutine이 끝나기를 자동으로 기다리지 않습니다.

3

goroutine과 OS 스레드의 주요 차이점은 무엇입니까?

답변

goroutine은 초기 스택으로 약 2 KB를 사용하지만 OS 스레드는 일반적으로 1~2 MB가 필요합니다. Go runtime은 사용자 공간에서 goroutine의 scheduling을 관리하며(M:N scheduling), 수천 개의 goroutine을 몇 개의 OS 스레드에 멀티플렉싱합니다. 이를 통해 리소스에 의해 제한되는 OS 스레드와 달리 시스템에 부담을 주지 않고 수백만 개의 goroutine을 생성할 수 있습니다.

4

메인 프로그램이 goroutine이 끝나기 전에 종료되면 어떻게 됩니까?

5

Go runtime은 goroutine 실행을 어떻게 관리합니까?

+17 면접 질문

다음 면접을 위해 Go을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기