美文网首页
Go 并发模式

Go 并发模式

作者: 别瞄我 | 来源:发表于2020-08-04 17:35 被阅读0次

1. 共享内存

func main() {
    flag := 0
    go func() {
        fmt.Println("Hello World !!!")
        flag = 1
    }()
Loop:
    for {
        if flag == 1 {
            break Loop
        }
    }
}

2. 互斥锁

func main() {
    var mu sync.Mutex
    mu.Lock()
    go func() {
        fmt.Println("Hello World !!!")
        mu.Unlock()
    }()
    mu.Lock()
}

3. 无缓冲channel

func main() {
    done := make(chan int)
    go func() {
        fmt.Println("Hello World !!!")
        <-done
    }()
    done <- 1
}
// 或
func main() {
    done := make(chan int)
    go func() {
        fmt.Println("Hello World !!!")
        done <- 1
    }()
    <-done
}

4. 带缓冲channel

func main() {
    len := 10
    done := make(chan int, len)
    // 开N个后台打印线程
    for i := 0; i < len; i++ {
        go func() {
            fmt.Println("Hello World !!! " + strconv.Itoa(i))
            done <- 1
        }()
    }
    // 等待N个后台线程完成
    for i := 0; i < len; i++ {
        <-done
    }
}

5. sync.WaitGroup

func main() {
    var wg sync.WaitGroup
    // 开N个后台打印线程
    for i := 0; i < 10; i++ {
        wg.Add(1)
        go func() {
            fmt.Println("Hello World !!! " + strconv.Itoa(i))
            wg.Done()
        }()
    }
    // 等待N个后台线程完成
    wg.Wait()
}

相关文章

  • Go 并发模式

    1. 共享内存 2. 互斥锁 3. 无缓冲channel 4. 带缓冲channel 5. sync.WaitGroup

  • Golang 常见的并发模式

    常见的并发模式 Go语言最吸引人的地方是它内建的并发支持。Go语言并发体系的理论是C.A.R Hoare在1978...

  • go常见并发模式(1):基本模式

    最基本模式:go+sync如下使用go+sync.WaitGroup并发执行让0-9每位数字加一 最基本模式:go...

  • Go控制程序生命周期

    近期学了go语言的并发编程,掌握了 并发原语-原子锁,互斥锁,通道 并发原理 并发设计模式今天我们就来锻炼一下,如...

  • Golang笔记-- 并发模式

    并发模式 [TOC] 并发程序指同时进行多个任务的程序, Go程序一种支持并发的方式是通过goroutine和ch...

  • Go: 屏障并发模式

    什么是屏障并发模式? 假设有这么一种场景,一个微服务需要调其他两个微服务的响应结果来返回结果给客户端。屏障并发模式...

  • GO学习笔记(18) - 并发编程(4) - 锁与传统同步机制

    目录 传统同步机制Mutex 并发模式-服务任务模式循环模式select模式 传统同步机制 在GO语言中,不建议用...

  • Go语言并发

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

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

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

  • Go基础语法(九)

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

网友评论

      本文标题:Go 并发模式

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