go中的context超时控制、超时传递、跨进程超时传递

本文介绍了Go语言中context包中的WithCancel、WithDeadline和WithTimeout函数,它们用于创建可管理goroutine生命周期的上下文,支持取消、截止时间和超时,以增强并发程序的健壮性和资源管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

context包中的WithCancel、WithDeadline和WithTimeout函数提供了创建上下文(context)对象的能力,这些上下文对象对于管理goroutine的生命周期非常重要,尤其是在处理取消、超时和截止时间的场景中。

  1. WithCancel
    WithCancel函数返回一个新的上下文对象和一个取消函数。调用这个取消函数将取消这个上下文对象,以及从它派生的所有上下文对象。

作用与意义
WithCancel用于创建可以被手动取消的上下文。这对于告知goroutine停止当前工作并及时退出非常有用。

代码案例

package main

import (
    "context"
    "fmt"
    "time"
)

func operation(ctx context.Context, duration time.Duration) {
   
    select {
   
    case <-time.After(duration):
        fmt.Println("Operation finished")
    case <-ctx.Done():
        fmt.Println("Operation cancelled")
    }
}

func main() {
   
    ctx, cancel := context.WithCancel(context.Background())
    go operation(ctx, 5*time.Second)

    time.Sleep(2 * time.Second) // 模拟在操作完成前进行取消
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值