超过时间限制取消 Goroutine
在负载测试场景中,控制 Goroutines 的执行时长至关重要。这是实现此目的的有效方法。
考虑以下在 Goroutines 中管理 HTTP 请求的代码片段:
但是,来自 httpPost() 的 Goroutines 在指定的 cfg.Duration 后继续运行已经过去了。
要解决这个问题,您可以利用 Go 的 context 包。通过将 context.Context 对象传递给您的 Goroutines,您可以在达到指定超时时取消这些 Goroutines。
这是使用 context 包的代码的修订版本:
通过此修改,当指定的 cfg.Duration 到期时,ctx.Done() 通道将关闭,表示取消 httpPost() Goroutine,这将然后返回。
以上是Go中如何在指定时间后优雅地取消goroutine?的详细内容。更多信息请关注PHP中文网其他相关文章!