gpt4 book ai didi

go - golang中的并发设计——等待一定数量的goroutines

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

我有一个包含 10 个服务器的列表,其中一个服务器是主要。它有责任向剩余的 9 个服务器发送一个请求,并且必须等待对其中至少 5 个服务器的回复。我可以使用 goroutines 异步发送这些请求,并且一旦我收到至少 5 个的答复,我就可以继续执行死刑了。一般来说,我如何使用 go 设计它?随意使用您喜欢的任何工具。您可以假设这 10 台服务器是隔离的,并且它们之间没有任何共享。

最佳答案

由于您正在与远程服务器通信,因此使用 context.Context 可能是有意义的一旦您的 10 个请求中有 5 个完成,该请求就会被取消。您可以将该上下文传递给您正在使用的任何网络功能。

例如:

ctx, cancel := context.WithCancel(context.Background())
n := int32(10)
// Inside the goroutine
if atomic.AddInt32(&n, -1) == 5 {
cancel()
}
<-ctx.Done() // returns once the context is canceled

关于go - golang中的并发设计——等待一定数量的goroutines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730011/

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