转到频道的使用

时间:2018-08-27 00:22:04

标签: go goroutine

我正在使用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
        }
    }

此实现有效!但是,有没有更好的方法来执行上述操作?非常感谢!

0 个答案:

没有答案