Go 围棋频道的使用

Go 围棋频道的使用,go,goroutine,Go,Goroutine,我正在寻找使用go通道对以下功能进行验证/更好的设计- main()中的进程X必须在轮询进程之后运行。启动进程X后,如果它成功运行,则需要每分钟检查一次。如果出现故障,则需要在再次轮询后重新启动进程(如果需要) startX:=make(chan bool) startedX:=制造(chan bool) startX为什么在这里需要通道:为什么不使用布尔值?你甚至可能不需要它-一个无限循环在你开始后运行rePoll,它的工作原理是相同的:对于{poll()X.Run()rePoll()X.ca

我正在寻找使用go通道对以下功能进行验证/更好的设计- main()中的进程X必须在轮询进程之后运行。启动进程X后,如果它成功运行,则需要每分钟检查一次。如果出现故障,则需要在再次轮询后重新启动进程(如果需要)

startX:=make(chan bool)
startedX:=制造(chan bool)

startX为什么在这里需要通道:为什么不使用布尔值?你甚至可能不需要它-一个无限循环在你开始后运行
rePoll
,它的工作原理是相同的:
对于{poll()X.Run()rePoll()X.cancel()}
我想你可能需要一个检查X并使用time.Ticker每隔一定时间轮询一次的例程。
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
        }
    }