美文网首页
Go语言学习笔记-并发编程-Context与任务取消

Go语言学习笔记-并发编程-Context与任务取消

作者: noonenote | 来源:发表于2019-04-24 18:05 被阅读0次

Context

  1. 根context:通过context.background()来创建
  2. 子context:context.withCancel(parentContext)创建
    • ctx,cancel := context.WithCancel(context.Background())
  3. 当前context被取消时,基于当前context的子context都会被取消
  4. 接收取消通知:<-ctx.Done()
package cancel

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

func isCancelled(ctx context.Context) bool {
    select {
    case <-ctx.Done():
        return true
    default:
        return false
    }
}

func TestCancel(t *testing.T) {
    ctx, cancel := context.WithCancel(context.Background())
    for i := 0; i < 5; i++ {
        go func(i int, ctx context.Context) {
            for {
                if isCancelled(ctx) {
                    break
                }
                time.Sleep(time.Millisecond * 5)
            }
            fmt.Println(i, "Cancelled")
        }(i, ctx)
    }
    cancel()
    time.Sleep(time.Second * 1)
}

相关文章

  • Go语言学习笔记-并发编程-Context与任务取消

    Context 根context:通过context.background()来创建 子context:conte...

  • Go基础语法(九)

    Go语言并发 Go 是并发式语言,而不是并行式语言。 并发是指立即处理多个任务的能力。 Go 编程语言原生支持并发...

  • Go语言学习笔记-并发编程-任务的取消

  • Go并发

    Go语言中的并发编程 并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很...

  • Go 的并发性与调度器

    本篇文章是我对 Go 语言并发性的理解总结,适合初步了解并发,对 Go 语言的并发编程与调度器原理有兴趣的读者。 ...

  • 笨办法学golang(二)

    这是Go语言学习笔记的第二篇文章。 Go语言学习笔记参考书籍「Go语言编程」、Go官方标准库 前文提要 上篇文章中...

  • Go并发调度

    本文是《循序渐进Go语言》的第六篇-Go并发调度。本文是学习《Go语言学习笔记》的并发调度一章,然后结合阅读源码的...

  • go语言开发培训班哪里好

    Go作为专门为并发和大数据设计的语言,在编程界占据越来越重要的地位!越来越多的人开始学习go编程语言,go语言开发...

  • Go语言简介

    Go语言简介 Go语言设计的初衷 针对其他语言的痛点进行设计并加入并发编程为大数据,微服务,并发而生的通用编程语言...

  • Golang Context

    参考Go语言实战笔记(二十)| Go ContextGolang context初探 一、WaitGroup 这是...

网友评论

      本文标题:Go语言学习笔记-并发编程-Context与任务取消

      本文链接:https://www.haomeiwen.com/subject/lijigqtx.html