[nodejs] Golang에서의 비동기 프로그래밍

Golang은 빠른 성능과 간결한 문법으로 유명한 프로그래밍 언어입니다. 비동기 프로그래밍은 대규모 및 실시간 애플리케이션을 개발하는 데 중요한 요소입니다. 이 기사에서는 Golang에서의 비동기 프로그래밍에 대해 알아보겠습니다.

비동기 프로그래밍이란?

비동기 프로그래밍은 애플리케이션에서 여러 작업을 동시에 처리하도록 하는 프로그래밍 방식입니다. 이를 통해 시스템의 확장성과 성능을 향상시킬 수 있습니다.

Golang에서의 비동기 프로그래밍

Golang은 기본적으로 고루틴을 사용하여 비동기 프로그래밍을 지원합니다. 각각의 고루틴은 별도의 스레드에서 실행되는 것이 아니라, Golang 런타임에 의해 관리됩니다. 이를 통해 Golang은 경량화된 스레딩 모델을 가지고 있습니다.

비동기 작업 실행

package main

import (
	"fmt"
	"time"
)

func main() {
	go task1() // 비동기로 task1 실행
	task2()
}

func task1() {
	time.Sleep(1 * time.Second)
	fmt.Println("Task 1 done")
}

func task2() {
	fmt.Println("Task 2 done")
}

위의 예시에서 task1()은 1초를 기다린 후 “Task 1 done”을 출력하고, task2()는 즉시 “Task 2 done”을 출력합니다.

채널 활용

또한, Golang은 채널을 통해 고루틴 간의 통신을 지원합니다. 이를 통해 비동기적으로 데이터를 주고받을 수 있습니다.

package main

import "fmt"

func main() {
	ch := make(chan string)
	go sendData(ch)
	go getData(ch)
}

func sendData(ch chan string) {
	ch <- "Hello, World!"
}

func getData(ch chan string) {
	fmt.Println(<-ch)
}

위의 예시에서 sendData 함수는 채널을 통해 “Hello, World!”를 보내고, getData 함수는 채널을 통해 데이터를 받아 출력합니다.

마치며

Golang은 고루틴과 채널을 통해 강력한 비동기 프로그래밍을 지원합니다. 이를 통해 병렬 처리와 효율적인 리소스 활용을 달성할 수 있습니다.

참고 자료