[go] 시그널 발송
고루틴과 채널을 사용하여 시스템에서 시그널을 발송하는 방법을 알아보겠습니다.
1. 고루틴을 사용한 동시성 프로그래밍
고루틴은 경량 스레드로, 동시성 프로그래밍을 구현하는 데 사용됩니다. 다음은 고루틴을 생성하는 예시입니다.
go func() {
// 고루틴이 수행할 작업
}()
2. 채널을 사용한 데이터 통신
채널은 고루틴 간에 데이터를 안전하게 전달하기 위한 수단입니다. 다음은 채널을 생성하고 사용하는 예시입니다.
ch := make(chan int)
go func() {
ch <- 123 // 채널에 값을 보냄
}()
val := <-ch // 채널에서 값을 받음
3. 시그널 발송 예제
고루틴과 채널을 이용하여 시그널을 발송하는 전체 예제를 살펴봅시다.
package main
import (
"fmt"
"time"
)
func main() {
sigCh := make(chan bool)
go func() {
// 시그널을 발송
time.Sleep(2 * time.Second)
sigCh <- true
}()
fmt.Println("waiting for signal...")
<-sigCh // 시그널을 기다림
fmt.Println("signal received")
}
위 예제는 고루틴을 통해 2초 후에 시그널을 발송하고, 메인 함수에서 이를 기다렸다가 수신하는 과정을 보여줍니다.
고루틴과 채널을 이용하여 시스템에서 시그널을 발송하는 방법에 대해 알아보았습니다. 동시성 프로그래밍에서 유용하게 활용될 수 있는 기술입니다.
더 자세한 내용을 알고 싶다면 여기를 참고해주세요.