我正在使用Go渠道寻求以下功能的验证/更好的设计- main()中的进程X必须在轮询过程之后运行。启动进程X之后,需要每分钟检查一次它是否成功运行。发生故障时,该过程需要在再次轮询后重新启动(如果需要)。
startX := make(chan bool)
startedX := make(chan bool)
startX <- true
for {
select {
case <-startX:
//Check if a worked needs to be started
poll()
// Start process
X.Run()
// Started X
startedX <- true
case <-startedX:
// keep polling for errors
rePoll()
// cancel on error
X.cancel()
// return to startX (To see if the worker needs to be restarted or if another worker has already been started)
startX <- true
}
}
此实现有效!但是,有没有更好的方法来执行上述操作?非常感谢!