Go语言,互斥锁使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言,互斥锁使用相关的知识,希望对你有一定的参考价值。

package main

import (
	"fmt"
	"runtime"
	"sync"
)

var (
	counter int
	wg sync.WaitGroup
	mutex sync.Mutex
)

func main() {
	wg.Add(2)
	
	fmt.Println("Create Goroutines")
	go incCounter(1)
	go incCounter(2)
	
	fmt.Println("Waiting To Finish")
	wg.Wait()
	
	fmt.Println("Final Counter:", counter)
}

func incCounter(id int) {
	defer wg.Done()
	for count := 0; count < 2; count++ {
		mutex.Lock()
		{
			value := counter
			runtime.Gosched()
			value++
			counter = value
		}
		mutex.Unlock()
	}
}

  

以上是关于Go语言,互斥锁使用的主要内容,如果未能解决你的问题,请参考以下文章

go语言--竞争原子函数互斥锁

Go语言之Go语言锁机制

Go语言,互斥锁使用

037_go语言中的互斥锁

45. sync.Mutex 互斥和互斥锁 | 厚土Go学习笔记

go语言学习笔记 — 进阶 — 并发编程:互斥锁(sync.Mutex)—— 保证同时只有一个goroutine可以访问共享资源