투케이2K

38. (Go Lang) [Mac Os] Go 문법 : Go 루틴 (go routine) 사용해 익명 함수 그룹 (Group) 실행 대기 수행 본문

Go Lang (Go 언어)

38. (Go Lang) [Mac Os] Go 문법 : Go 루틴 (go routine) 사용해 익명 함수 그룹 (Group) 실행 대기 수행

투케이2K 2024. 2. 20. 19:31

[개발 환경 설정]

개발 언어 : Go

 

[소스 코드]

package main

import (
	"fmt"
	"sync"
)

func main() {

	// ---------------------------------------------------
	// [기본 설명]
	// ---------------------------------------------------
	// Go 루틴(go routine)은 Go 런타임이 관리하는 Lightweight 논리적 (혹은 가상적) 쓰레드입니다
	// ---------------------------------------------------
	// Go 루틴(go routine)은 비동기적으로(asynchronously) 함수루틴을 실행하므로, 여러 코드를 동시에(Concurrently) 실행하는데 사용됩니다
	// ---------------------------------------------------

	// [Wait Group 생성 - 2개의 Go 루틴을 기다림]
	var wait sync.WaitGroup
	wait.Add(2)

	// [익명함수를 사용한 go routine]
	go func() {
		defer wait.Done() // 끝나면 Done() 호출
		fmt.Println("Hello")
	}()

	// [익명함수를 사용한 go routine]
	go func(msg string) {
		defer wait.Done() // 끝나면 Done() 호출
		fmt.Println(msg)
	}("Twok") // 익명함수에 파라미터 전달

	wait.Wait() // Go 루틴 모두 끝날 때까지 대기
}
 

[결과 출력]

 

 

반응형
Comments