[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초 후에 시그널을 발송하고, 메인 함수에서 이를 기다렸다가 수신하는 과정을 보여줍니다.

고루틴과 채널을 이용하여 시스템에서 시그널을 발송하는 방법에 대해 알아보았습니다. 동시성 프로그래밍에서 유용하게 활용될 수 있는 기술입니다.

더 자세한 내용을 알고 싶다면 여기를 참고해주세요.