gpt4 book ai didi

go - 在 wg.wait() 完成后停止请求输入的选项

转载 作者:IT王子 更新时间:2023-10-29 00:44:52 25 4
gpt4 key购买 nike

1。我触发了一个 goroutine(运行第三方程序),我正在使用 wg.Wait() 等待它完成

2。在 wg.Wait() 之前,我想为用户提供一个选项来取消正在运行的第三方程序(如果他愿意的话)

3。第三方程序执行完成后,这个用户输入选项应该消失(他没有理由停止已经完成的过程)。目前,必须在触发 wg.Wait()

之前提供此输入

我该怎么做?我想在 goroutine 中保留 optiontoStop() 函数,然后在 wg.Wait() 完成后将其杀死,但我无法完成它,否则就是有没有办法在我从 XYZ 返回之前向 scanf 的阻塞调用发送一个随机值?或任何其他解决方法?

更多详情:

1

func XYZ() {
wg.Add(1)
go doSomething(&wg) // this runs a third party program
}

2

func ABC() {
XYZ()
optiontoStop() // I want this input wait request to vanish off after
// the third party program execution
// (doSomething()) is completed
wg.Wait()
//some other stuff
}

3

func optiontoStop() {
var option string
fmt.Println("Type 'quit' if you want to quit the program")
fmt.Scanf("%s",&string)
//kill the process etc.
}

最佳答案

您必须在另一个 Go 例程中处理您的用户输入,然后可能只使用一个选择而不是 wg.Wait():

func ABC() {
done := make(chan struct{})
go func() {
defer close(done)
doSomething()
}()
stop := make(chan struct{})
go func() {
defer close(stop)
stop <- optionToStop()
}
select {
case done:
// Finished, close optionToStop dialog, and move on
case stop:
// User requested stop, terminate the 3rd party thing and move on
}
}

关于go - 在 wg.wait() 完成后停止请求输入的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com