美文网首页
Go语言学习笔记-并发编程-共享内存并发机制

Go语言学习笔记-并发编程-共享内存并发机制

作者: noonenote | 来源:发表于2019-04-22 16:30 被阅读0次

Mutex

WaitGroup

类似java中的join

package share_mem
import (
        "sync"
        "testing"
        "time"
)

func TestCounter(t *testing.T) {
        counter := 0
        for i := 0; i < 1000; i++ {
                go func() {

                        counter++
                }()

        }
        time.Sleep(2 * time.Second)
        t.Logf("counter = %d",counter)

}

func TestCounterSafe(t *testing.T) {
        var mut sync.Mutex
        counter := 0
        for i := 0; i < 5000; i++ {
                go func() {
                        defer func(){
                                mut.Unlock()
                        }()
                        mut.Lock()
                        counter++
                }()
        }
        //time.Sleep(1 * time.Second)
        t.Logf("counter = %d", counter)

}
func TestCounterWaitGroup(t *testing.T) {
        var mut sync.Mutex
        var wg sync.WaitGroup
        counter := 0
        for i := 0; i < 5000; i++ {
                wg.Add(1)
                go func() {
                        defer func(){
                                mut.Unlock()
                        }()
                        mut.Lock()
                        counter++
                        wg.Done()
                }()
        }
        //time.Sleep(1 * time.Second)
        wg.Wait()
        t.Logf("counter = %d", counter)

}

相关文章

  • go并发通信

    go并发编程时,请记住:“不要通过共享内存来通信,而应该通过通信来共享内存” channel是Go语言在语言级别提...

  • Go语言基础6 - 并发

    概述 我们将用几节来学习Go语言基础,本文结构如下: 1. 并发 1.1 通过通信共享内存 在并发编程中,为实现对...

  • Go语言学习笔记-并发编程-共享内存并发机制

    Mutex WaitGroup 类似java中的join

  • golang并发总结

    golang并发模型 go在语言层面提供了内置的并发支持 不要通过共享内存来通信,而应该通过通信来共享内存 并发与...

  • java内存模型

    java内存模型基础 并发编程,两个关键问题:线程通信和线程同步通信机制:共享内存和消息传递 java并发采用共享...

  • Go基础语法(九)

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

  • GoLang并发编程3

    并发编程有两个模式 共享内存 消息 共享内存,以C语言举例 换成 GoLang

  • Go并发

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

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

    Actor Model CSP vs Actor 和Actor的直接通讯不同,CSP模式则是通过Channel进行...

  • 深入理解Java内存模型 ch1基础

    1.并发编程模型的分类 并发编程的两个关键问题: 通信 同步 通信机制有两种: 共享内存 消息传递 同步:用于控制...

网友评论

      本文标题:Go语言学习笔记-并发编程-共享内存并发机制

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