如何让goroutine在超时后自动退出
您可以使用 time.After
或 time.Tick
来创建一个计时器,并在 goroutine 中进行检查。如果超时,您可以使用 select
语句来等待该计时器的超时信号,然后退出 goroutine。
例如,假设您想要在 10 秒钟后超时退出 goroutine,您可以这样做:
// 创建计时器
timer := time.NewTimer(10 * time.Second)
// 在 goroutine 中运行代码
go func() {
// 在 select 语句中等待计时器的超时信号
select {
case <-timer.C:
// 超时后,退出 goroutine
return
// 您还可以添加其他 case 语句来处理其他事件
}
}()
// 您还可以使用 timer.Stop() 来停止计时器
另一种选择是使用 time.After
来创建一个计时器,它会在指定的时间后返回一个通道,您可以在 select 语句中等待该通道,如下所示:
// 创建计时器
timeout := time.After(10 * time.Second)
// 在 goroutine 中运行代码
go func() {
// 在 select 语句中等待计时器的超时信号
select {
case <-timeout:
// 超时后,退出 goroutine
return
// 您还可以添加其他 case 语句来处理其他事件
}
}()
使用 time.Tick
也可以实现类似的功能,但它会在指定的时间间隔内重复发送
Copyright © 2022-2023, Koudai Team