[go] go 언어에서의 플래그 값을 다루는 멀티스레딩 방법
Go 언어에서 플래그 값을 다루는 것은 프로그램의 제어 흐름을 변경하고, 여러 스레드 간의 데이터를 동기화하는 데 중요합니다. 이번에는 Go 언어에서 멀티스레딩을 사용하여 플래그 값을 다루는 방법을 알아보겠습니다.
1. 플래그 값 정의하기
package main
import "fmt"
import "sync"
var flag bool
var wg sync.WaitGroup
var mutex sync.Mutex
우선 플래그 값을 정의합니다. 위의 예시에서는 flag
변수를 bool
타입으로 설정하였습니다. 또한, 프로그램의 동시성을 보장하기 위해 sync.WaitGroup
과 sync.Mutex
를 사용합니다.
2. 플래그 값을 변경하는 함수 정의하기
func setFlagValue() {
mutex.Lock()
defer mutex.Unlock()
flag = true
wg.Done()
}
func checkFlagValue() {
defer wg.Done()
if flag {
fmt.Println("플래그 값은 참입니다.")
} else {
fmt.Println("플래그 값은 거짓입니다.")
}
}
위의 예시에서는 setFlagValue
함수에서 플래그 값을 변경하고, checkFlagValue
함수에서 플래그 값을 확인합니다. sync.Mutex
를 사용하여 flag
변수에 대한 동기화를 보장합니다.
3. 멀티스레딩으로 플래그 값 다루기
func main() {
wg.Add(2)
go setFlagValue()
go checkFlagValue()
wg.Wait()
}
위와 같이 go
키워드를 통해 각 함수를 고루틴으로 실행하고, sync.WaitGroup
을 통해 고루틴의 실행이 완료될 때까지 대기합니다.
멀티스레딩을 활용하여 플래그 값을 안전하게 다룰 수 있습니다. Go 언어의 강력한 동시성 지원을 활용하여 안정적인 멀티스레딩 프로그래밍을 할 수 있습니다.
참고 문헌: