[golang] sync.WaitGroup으로 고루틴 작업 기다리기

2024. 11. 9. 23:53·Language/Go

서론

Go 언어에서는 동시성 처리를 간편하게 할 수 있는 고루틴(goroutine)을 제공한다. 여러 고루틴을 동시에 실행하고 이들의 작업이 완료될 때까지 기다리는 문제는 sync.WaitGroup을 사용하여 해결할 수 있다. sync.WaitGroup은 여러 고루틴의 작업을 동기화하고 모든 고루틴이 작업을 완료할 때까지 대기하는 기능을 제공한다. 이를 통해 고루틴들이 완료될 때까지 기다리며 효율적인 병렬 처리를 할 수 있다.

 

예제

package main

import (
	"fmt"
	"sync"
)

func main() {
	var wg sync.WaitGroup
	for i := 0; i < 5; i++ {
		wg.Add(1)
		go func(n int) {
			fmt.Println("Goroutine:", n)
			wg.Done()
		}(i)
	}

	wg.Wait()
	fmt.Println("Finish 🏁")
}

 

메소드 설명

메소드 설명
sync.WaitGroup.Add(n int) WaitGroup에 대기할 고루틴을 n만큼 추가한다.
sync.WaitGroup.Done() 고루틴 작업이 끝났음을 알린다.
sync.WaitGroup.Wait() 모든 고루틴이 완료될 때까지 대기한다.

 

'Language > Go' 카테고리의 다른 글

[golang] 현재 운영 체제 확인하기  (0) 2024.11.11
[golang] iota 키워드로 열거형 상수 정의  (4) 2024.11.10
[golang] html/template 패키지로 동적 페이지 처리하기  (3) 2024.11.07
[golang] json.Marshal에서 HTML 이스케이프 문제  (3) 2024.10.31
[golang] reflect 패키지를 사용한 외부 패키지의 private 필드 접근하기  (0) 2024.10.30
'Language/Go' 카테고리의 다른 글
  • [golang] 현재 운영 체제 확인하기
  • [golang] iota 키워드로 열거형 상수 정의
  • [golang] html/template 패키지로 동적 페이지 처리하기
  • [golang] json.Marshal에서 HTML 이스케이프 문제
在晟
在晟
  • 在晟
    Jae-Sung
    在晟
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • Language (23)
        • Go (23)
      • DBMS (1)
        • MariaDB (1)
      • Notes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Jae-Sung
    • GitHub
  • 인기 글

  • 태그

    오블완
    go
    unsafe
    http
    interface{}
    recover
    티스토리챌린지
    fasthttp
    filepath
    Runtime
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
在晟
[golang] sync.WaitGroup으로 고루틴 작업 기다리기
상단으로

티스토리툴바