メソッドを呼び出して、戻り値をチャネルに渡す 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