ゴルーチンを停止する方法 質問する

ゴルーチンを停止する方法 質問する

メソッドを呼び出して、戻り値をチャネルに渡す goroutine があります。

ch := make(chan int, 100)
go func(){
    for {
        ch <- do_stuff()
    }
}()

このようなゴルーチンを停止するにはどうすればよいでしょうか?

ベストアンサー1

通常、goroutine に (場合によっては別の) シグナル チャネルを渡します。そのシグナル チャネルは、goroutine を停止したいときに値をプッシュするために使用されます。goroutine はそのチャネルを定期的にポーリングします。シグナルを検出するとすぐに、goroutine は終了します。

quit := make(chan bool)
go func() {
    for {
        select {
        case <- quit:
            return
        default:
            // Do other stuff
        }
    }
}()

// Do stuff

// Quit goroutine
quit <- true

おすすめ記事