[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 언어 공식 문서