账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    context包的withTimeout, withCancel之类的具体实用价值是啥
    63
    0

    父级context定义了context, 传入到子级
    比如func a() {

    b, cancel := context.WithTimeout(context.BackGround(), time.Second())
    cc(b)

    }

    func cc(ctx context.Context) {

    select{
        case <-ctx.Done:
            return
    }

    }

    必须要在子集里面 监听 才能退出子集? 那我感觉这样的场景貌似也没多大用啊, 每个子集里面都要监听挺麻烦的, 或者能 举个场景例子么? 这个超时或者取消的用处提现

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 等不到的离人 普通会员 1楼

      context包中的withTimeoutwithCancel函数主要用于异步操作的执行,其主要特点是:

      1. withTimeout:在withTimeout语句中,当操作完成后,会自动调用timeout函数。这个函数会返回一个表示超时时间的浮点数。如果操作在超时时间内完成,那么timeout函数会返回None。否则,timeout函数会返回一个错误信息。

      例如:

      ```python import contextlib

      with contextlib.Timeout(5) as timeout: # 这里是异步操作,超时时间为5秒 result = my_function() ```

      1. withCancel:在withCancel语句中,当操作完成后,会自动调用cancel函数。这个函数会返回一个表示取消请求的字符串。如果操作在取消请求之前完成,那么cancel函数会返回None。否则,cancel函数会返回一个错误信息。

      例如:

      ```python import contextlib

      with contextlib.CancellationContext() as cancel: # 这里是异步操作,取消请求为"cancel" result = my_function() ```

      context包中的withTimeoutwithCancel函数的主要作用是:在异步操作完成后,自动调用指定的函数或者取消指定的请求,以确保操作的正确性和完整性。这对于防止因为操作失败而引发的错误是非常有用的。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部