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

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

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

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

func isCancelled(cancelChan chan struct{}) bool {
    select {
    case <-cancelChan:
        return true
    default:
        return false
    }
}

func cancel_1(cancelChan chan struct{}) {
    cancelChan <- struct{}{}
}

func cancel_2(cancelChan chan struct{}) {
    close(cancelChan)
}

func TestCancel(t *testing.T) {
    cancelChan := make(chan struct{}, 0)
    for i := 0; i < 5; i++ {
        go func(i int, cancelCh chan struct{}) {
            for {
                if isCancelled(cancelCh) {
                    break
                }
                time.Sleep(time.Millisecond * 5)
            }
            fmt.Println(i, "Cancelled")
        }(i, cancelChan)
    }
    cancel_2(cancelChan)
    time.Sleep(time.Second * 1)
}

相关文章

  • Go基础语法(九)

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

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

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

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

  • Go并发

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

  • Go并发调度

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

  • 笨办法学golang(二)

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

  • Go语言简介

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

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

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

  • Go 语言学习笔记-并发编程

    Go 并发编程 概述 简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务。 宏观的并发:是指在一段时间内...

  • 16.并发

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

网友评论

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

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