首页 > 其他分享 >go使用context.withtimtout取消一个超时操作

go使用context.withtimtout取消一个超时操作

时间:2023-11-21 09:00:26浏览次数:39  
标签:fmt cancel done context time go withtimtout

使用context.WithTimeout

package main

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

func main() {
timeout := 5 * time.Second
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()

done := make(chan bool)

go func() {
    // 模拟耗时操作
    time.Sleep(2 * time.Second)
    done <- true
}()

select {
case <-done:
    fmt.Println("Task completed successfully.")
case <-ctx.Done():
    fmt.Println("Timeout! The operation took too long.")
}
}

标签:fmt,cancel,done,context,time,go,withtimtout
From: https://www.cnblogs.com/cheyunhua/p/17845451.html

相关文章

  • Go基础面经题
    Go基础1.基础特性Go的优势天生支持并发,性能高。单一的标准代码格式,比其他语言更具可读性。自动垃圾收集机制比Java和Python更有效,因为它与程序同时执行。Go数据类型int,string,float,bool,array,slice,map,channel,pointer,struct,interface,meth......
  • go的类型断言跟静态转换
    Go中的类型断言与静态转换原创 TimLiu 爱发白日梦的后端 2023-10-1510:47 发表于广东收录于合集#go95个类型断言在Go中,类型断言用于提取和测试接口值的动态类型。通过断言,您可以确定接口值是否持有特定的底层具体类型,如果持有,则获取该值。下面是一个如何在Go......
  • django orm中如何创建表关系
    表与表之间的关系 一对多 多对多 一对一 没有关系判断表关系的方法:换位思考"""图书表出版社表作者表作者详情表"""图书和出版社是一对多的关系外键字段建在多的那一方book图书和作者是多对多的关系需要创建第三张表来专门存储作者与作者详情表是一对一"""fromdjang......
  • django orm对象关系映射
    orm不会帮你创建库只能创建到表的层面需要你自己提前创建好库"""#对象关系映射表 类记录 对象数据 对象属性/方法"""能够让一个不会sql语句的python程序员也能够简单快捷的操作数据库,极大的提升开发效率"""#去应用下的models.py中书写模型类 #类 模型类#表 模......
  • pycharm链接数据库 django链接MySQL
    #找到pycharmdatabase选项(三个地方查找)#选取对应的数据库下载对应的驱动"""明明链接上了数据库但是看不到表无法操作这个时候你只需要将刚刚创建的链接删除重新链接一次即可"""  #1.配置文件中配置DATABASES={'default':{'ENGINE':'django.db.back......
  • 为什么 Django 后台管理系统那么“丑”?
    哈喽大家好,我是咸鱼相信使用过Django的小伙伴都知道Django有一个默认的后台管理系统——DjangoAdmin它的UI很多年都没有发生过变化,现在看来显得有些“过时且简陋”那为什么Django的维护者却不去优化一下呢?原文作者去询问了多位维护者了解了其历史和”为什么这么设计......
  • 我们用goframe重写了FastAdmin的后端,原来这么爽
    时间大约是三年前,当时我所在的团队是最早接触PHP的,而团队其他成员都是用Java。由于某些项目原因,我们决定全面转向使用GO进行开发。在当时,我们并不想花太多时间去折腾REACT和VUE这些前端框架,我们更倾向于使用jQuery来开发,因为我们喜欢它的快感。于是我想到了一个基于Thi......
  • golang-引用传递
    dbTags:=make([]*Tag,0)for_,value:=rangeidMap{dbTags=append(dbTags,&value)}针对这种情况传递的是变量的地址会导致新的数组都是相同的值解决方式使用中间变量接一下dbTags:=make([]*Tag,0)......
  • mongo ssl
    importcom.mongodb.ConnectionString;importcom.mongodb.MongoClientSettings;importcom.mongodb.client.MongoClients;importcom.mongodb.client.MongoClient;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjavax.net.ssl.SSLContext;importj......
  • docker部署django项目
    docker部署django项目在你项目路径下:requirement.txt,Dockerfile,uwsgi.iniDockerfileFROMpython:3.6MAINTAINERtigerEXPOSE8080ADD./requirement.txt/home/RUNpipinstall-r/home/requirement.txt-ihttps://pypi.douban.com/simple/RUNpipinstalluwsgi-iht......