[go] go 언어에서의 스레딩 및 병렬 처리를 위한 os 패키지 활용
본 포스트에서는 Go 언어에서의 스레딩과 병렬 처리를 위해 os
패키지를 활용하는 방법에 대해 알아보겠습니다.
스레드 생성하기
Go 언어에서는 os
패키지를 사용하여 OS 수준의 스레드를 생성할 수 있습니다.
다음은 간단한 예제 코드입니다.
package main
import (
"fmt"
"os"
"runtime"
)
func main() {
runtime.GOMAXPROCS(1) // 1개의 CPU 코어를 사용하도록 설정
for i := 0; i < 5; i++ {
go func() {
fmt.Println("고루틴 동작 중")
}()
}
fmt.Scanln()
}
위의 코드에서 runtime.GOMAXPROCS(1)
을 사용하여 1개의 CPU 코어를 사용하도록 설정하고, go
키워드를 사용하여 고루틴을 생성하고 있습니다.
병렬 처리하기
Go 언어의 os
패키지를 사용하여 병렬 처리를 수행할 수 있습니다. 다음은 병렬 처리를 위한 예제 코드입니다.
package main
import (
"fmt"
"os"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer wg.Done()
fmt.Println("첫 번째 고루틴")
}()
go func() {
defer wg.Done()
fmt.Println("두 번째 고루틴")
}()
wg.Wait()
}
위의 코드에서 sync.WaitGroup
을 사용하여 고루틴들이 모두 종료될 때까지 대기하도록 구현했습니다.
os
패키지를 사용하여 스레딩과 병렬 처리를 수행하는 방법에 대해 간단히 살펴봤습니다. Go 언어의 강력한 동시성 모델을 활용하여 병렬 처리를 구현할 수 있습니다.
참조: Go 언어 공식 문서