当前位置: 首页 > news >正文

沛县网站制作站长素材

沛县网站制作,站长素材,做音乐网站的目的,苏州专业做网站公司哪家好context作用 goroutine的退出机制 多个goroutine都是平行的被调度的#xff0c;多个goroutine如何协调工作涉及通信、同步、通知和退出 通信#xff1a;goroutine之间的通信同步chan通道 同步#xff1a;不带缓冲的chan提供了一个天然的同步等待机制。通过WaitGroup也可以…context作用 goroutine的退出机制 多个goroutine都是平行的被调度的多个goroutine如何协调工作涉及通信、同步、通知和退出 通信goroutine之间的通信同步chan通道 同步不带缓冲的chan提供了一个天然的同步等待机制。通过WaitGroup也可以为多个goroutine提供同步等待机制 通知这个通知和上面通信的数据不一样通知通常不是业务数据而是管理、控制流数据。要处理这个也好办在输入端绑定两个chan一个用于业务流数据另一个用于异常通知数据然后通过 select 收敛进行处理。这个方案可以解决简的问题但不是一个通用的解决方案。 退出goroutine 之间没有父子关系如何通知 goroutine 退出可以通过增加一个个单独的通道借助通道和 select 的广播机制 close channel to broadcast实现退出 通知退出机制 读取已经关闭的通道不会引起阻塞也不会导致panic而是立即返回该通道存储类型的零值 关闭select监听的某个通道能使select立即感知这种通知然后进行相应的处理即所谓的退出通知机制 contet库的设计目的就是跟踪 goroutine调用树并在这些goroutine 调用树中递通知和元数据 退出通知机制通知可以传递给整个 goroutine调用树上的每一个goroutine 传递数据数据可传递给整个goroutine 调用树上的每一个goroutine 使用 var wg sync.WaitGroup func main() {background : context.Background()//通过cancel进行控制/*cancelctx, cancelFunc : context.WithCancel(background)wg.Add(2)go jiankong1(cancelctx)time.Sleep(time.Second * 2)println(并不是因为主协程退出而导致另一个协程退出而是通过cancel方法通知另一个协程进行退出)cancelFunc()wg.Wait()println(完成退出)*///通过deadline进行控制也可以通过返回的cancelFunc手动进行控制/*deadline, _ : context.WithDeadline(background, time.Now().Add(time.Second*2))go deadF(deadline)time.Sleep(time.Second * 4)println(结束)*///通过timeout控制也可以通过返回的cancelFunc手动进行控制 超时以后报的错和deadline控制方式一样 context deadline exceededtimeout, _ : context.WithTimeout(background, time.Second*2)go deadF(timeout)time.Sleep(time.Second * 4)println(结束) }func deadF(ctx context.Context) {for true {select {case -ctx.Done():fmt.Println(只给了两秒的执行时间时间到了我得退出了。)//此处打印的错误为 context deadline exceededprintln(ctx.Err().Error())returndefault:time.Sleep(time.Millisecond * 1000)fmt.Println(我正在执行...)}} }func jiankong1(ctx context.Context) {defer wg.Done()cancel, _ : context.WithCancel(ctx)go jiankong2(cancel)for true {select {case -ctx.Done():fmt.Println(别人通知我主动退出了。在此处进行收尾工作释放资源等)//此处报错为context canceledfmt.Println(ctx.Err().Error())returndefault:time.Sleep(time.Millisecond * 100)fmt.Println(我在持续监控中...)}} }func jiankong2(ctx context.Context) {defer wg.Done()for true {select {case -ctx.Done():fmt.Println(上级通知我主动退出了。)fmt.Println(ctx.Err().Error())returndefault:time.Sleep(time.Millisecond * 100)fmt.Println(me在持续监控中...)}} } Tips: 异步任务使用context注意点 使用go func进行异步任务传入context时要考虑context的过期时间如果异步任务不考虑过期时间则最好传入一个无过期时间的context负责异步任务多或执行时间长context会过期影响异步任务的执行。 场景mongo批量插入数据后将返回的Id集合传入异步任务在异步任务中通过id查询数据如果共用了接口设置过期时间的context可能会导致一部分数据查询不到context过期导致
http://www.dnsts.com.cn/news/87123.html

相关文章:

  • 建设部网站上标准合同怎样在百度上发布自己的信息
  • 网上书城网站开发的数据字典网页设计与网站建设课程报告
  • 行业网站设计公司定制网站建设费用预算
  • 国外网站赚钱游侠相册网页设计作业
  • 零基础学习网站开发芜湖代理公司注册
  • 怎么查询网站开发公司58同城最新招聘信息今天
  • 郑州计算机网站公司2d游戏制作软件
  • 网站设计网络推广关键词广东省住房和城乡建设厅网站进不去
  • DW做的网站怎么弄兼容性wordpress单页面主题
  • 网站内链接分析招聘网站开发源码
  • 郑州快速建站价格网站做好了每年都要续费吗
  • 企业手机网站源码怎么制做网站
  • 江苏省建设厅网站建筑电工证如何做中国古城的网站
  • 帮传销做网站违法吗工装哪家装修公司好
  • 新手用什么框架做网站比较好宁阳移动网站制作
  • 注册公司网站模板下载深圳宝安区租房
  • 海兴网站建设杨凌网站建设哪家好
  • 网站建筑设计个人博客网
  • 手机pc微信三合一网站wordpress数据库导入
  • 网站数据库如何做做暧暧视频网站在线
  • 旅游网站建设项目报告论文接网站开发项目平台
  • 哪里做网站做得好一个人看的片免费高清大全
  • 手机做wifi中继上外国网站一家只做家纺的网站
  • 成都网站建设千古互联成都网页制作公司在线咨询
  • 景区官方网站建设方案山东省建设八大员考试网站
  • 自媒体平台注册入口快看点wordpress seo.php
  • 怎么样备份网站数据库个人网站鉴赏
  • 济南网站制作设计公司网站建设中销售人员会问客户的问题
  • 网站设计论文框架官方企业微信app下载
  • 怎么在主机上的建设网站内部链接网站大全