Goでプロセスが終了するのを防ぐにはどうすればよいですか?
Go言語では、sync.WaitGroupやselect{}文を使ってプロセスの終了を防ぐことができます。
- 同期処理を行うGoroutineの完了を待つWaitGroup
- sync.WaitGroup.Wait()
- 追加
- 完了
- 待ちます()
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(1) // 增加计数
go func() {
defer wg.Done() // 减少计数
// 执行一些操作
}()
wg.Wait() // 等待计数归零
fmt.Println("进程退出")
}
- {選んだ}
- {select}ネイティブに日本語で言い換える
- ケースは1つだけでネイティブの日本語で言い換えてください。
package main
import (
"fmt"
)
func main() {
done := make(chan bool)
go func() {
// 执行一些操作
done <- true
}()
<-done // 阻塞等待
fmt.Println("进程退出")
}
これらの二つの方法はどちらもプログラム停止を防ぎますが、具体的なニーズや場面に応じてどれを使用するか決めます。