ZBLOG

golang 中 主动关闭 ctx

在Go语言中,上下文(Context)是用于控制并传递请求范围数据的机制。如果需要主动关闭一个上下文(context),可以使用 context.WithCancel 函数创建一个可取消的上下文,并通过调用返回的 cancel 函数来手动关闭上下文。

示例代码如下:

package main

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

func doSomething(ctx context.Context) {
	for {
		select {
		case <-ctx.Done():
			fmt.Println("收到关闭信号,停止执行")
			return
		default:
			// 执行具体的操作
			fmt.Println("正在执行...")
			time.Sleep(time.Second)
		}
	}
}

func main() {
	ctx, cancel := context.WithCancel(context.Background())

	go doSomething(ctx)

	time.Sleep(5 * time.Second)

	cancel() // 主动关闭上下文

	time.Sleep(2 * time.Second)
}

在这个例子中,我们创建了一个可取消的上下文(context),并将它传递给 doSomething 函数进行处理。在 main 函数中,我们等待5秒钟后调用了 cancel() 方法,从而主动关闭了上下文。在 doSomething 函数中通过监听 <-ctx.Done() 可以接收到关闭信号并停止执行相应的操作。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=14760

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?