context.withtimeout() 函数用于创建带超时的子上下文,子上下文超时或父上下文被取消时,子上下文也会被取消。其使用方法如下:创建父上下文。调用 context.withtimeout(parent, timeout) 创建子上下文,其中 parent 为父上下文,timeout 为子上下文的超时时间。调用子上下文的 cancelfunc 取消子上下文,无论是否超时。
Golang 函数:用 context.WithTimeout 创建带超时的子上下文
context.WithTimeout 函数在 Go 中用于创建一个新的子上下文,并为其设定一个超时。当子上下文超时或父上下文被取消时,子上下文也会被取消。
语法:
立即学习“go语言免费学习笔记(深入)”;
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)
其中:
- parent:父上下文
- timeout:子上下文的超时时间
返回:
- Context:新的子上下文
- CancelFunc:取消子上下文的函数
实战案例:
以下示例演示了如何使用 context.WithTimeout 函数:
package main import ( "context" "fmt" "time" ) func main() { // 创建父上下文 ctx := context.Background() // 创建一个为期 1 秒的子上下文 subCtx, cancel := context.WithTimeout(ctx, 1*time.Second) defer cancel() // 在子上下文中执行任务 go func() { for { select { case <-subCtx.Done(): return default: fmt.Println("任务仍在运行...") } } }() // 等待子上下文完成 <-subCtx.Done() fmt.Println("子上下文超时或被取消") }
注意:
- 当 WithTimeout 超时时,它会发送一个 context.DeadlineExceeded 错误。
- 如果父上下文被取消,所有子上下文也会被取消,无论它们是否超时。
- 调用 CancelFunc 函数可以立即取消子上下文。
以上就是Golang 函数:用 context.WithTimeout 创建带超时的子上下文的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系 yyfuon@163.com