美文网首页Golang 入门资料+笔记
Go并发模型:并发协程chan的优雅退出

Go并发模型:并发协程chan的优雅退出

作者: 五岁小孩 | 来源:发表于2021-03-08 21:14 被阅读0次

Go并发模型:并发协程chan的优雅退出

go chan的使用

func main(){
    //------ 测试go chan 实现生产者和消费者
    //通道只由发送方关闭,接收方不可关闭
    //发送协程主动关闭通道,接收协程不关闭通道。技巧:把接收方的通道入参声明为只读,如果接收协程关闭只读协程,编译时就会报错。
    //协程处理1个通道,并且是读时,协程优先使用for-range,因为range可以关闭通道的关闭自动退出协程。
    //,ok可以处理多个读通道关闭,需要关闭当前使用for-select的协程。
    //显式关闭通道stopCh可以处理主动通知协程退出的场景。
    var c = make(chan string)
    //消费者
    go func() {
        for str := range c {
            fmt.Println("消费者01:", str)
        }
    }()
    go func() {
        for {
            select {
            case str, ok := <-c:
                if ok {
                    fmt.Println("消费者02:", str)
                }
            }
        }
    }()
    var msg = "xj"
    go func(msg string, ch chan string) {
        msg = "xj01"
        ch <- msg
    }(msg, c)
    go func(msg string, ch chan string) {
        msg = "xj02"
        ch <- msg
    }(msg, c)
    time.Sleep(time.Second * 5)
}

相关文章

  • Go并发模型:并发协程chan的优雅退出

    Go并发模型:并发协程chan的优雅退出 go chan的使用

  • 第六天

    一、并发编程 并发与并行(并发时间片轮询)资源竞争 1、goruntine协程 主协程退出了其他协程也跟着退出 主...

  • Go Goroutine

    协程并发 Go并发 什么是goroutine

  • Go语言——goroutine并发模型

    Go语言——goroutine并发模型 参考: Goroutine并发调度模型深度解析&手撸一个协程池 Golan...

  • Golang并发模型:并发协程的优雅退出

    goroutine作为Golang并发的核心,我们不仅要关注它们的创建和管理,当然还要关注如何合理的退出这些协程,...

  • Go并发编程实践

    Go语言最大的特点就是并发编程,它实现了一种基于协程的并发模型。轻量级的协程模型减少了线程模型的切换消耗,大大增加...

  • GO学习笔记(18) - 并发编程(1) - 理解gorouti

    目录 进程、线程与协程 并发模模型介绍 GO并发编程介绍 进程、线程与协程 进程和线程 进程是程序在操作系统中的一...

  • Go并发编程小贴士

    一、死锁陷阱 关于Go的并发编程,你会遇到哪些陷阱: 主协程退出时,所有子协程都一并退出; 所有子协程都已经完成工...

  • 关于Go语言,你不得不知的并发模式

    什么是并发?有哪些我们需要知道的并发模式?Go语言中的协程并发模型是怎样的?什么是主 goroutine?它与我们...

  • Go语言并发

    Go语言并发 Go语言级别支持协程,叫做goroutine Go 语言从语言层面支持并发和并行的开发操作 Go并发...

网友评论

    本文标题:Go并发模型:并发协程chan的优雅退出

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