1.互斥锁

互斥锁是对共享资源进行控制,在并发情况下只允许一个对其操作(一个协程访问时其他的都不能访问)

var count = 0
var wg sync.WaitGroup
var mutex sync.Mutex //声明一个互斥锁
func test(){
	mutex.Lock()
	count++
	fmt.Println("the count is ",count)
	time.Sleep(time.Millisecond)
	mutex.Unlock()
	wg.Done()
}

func main(){
	for i := 0 ;i<5 ;i++ {
		wg.Add(1)
		go test()
	}
	wg.Wait()
}

2.读写互斥锁

读写互斥锁 可以让多个读操作并发 ,同时读取 ,但对于写操作完全互斥 

有一个goroutine在写的时候 其他goroutine不能读也不能写

var mutex sync.RWMutex

  

  

相关文章:

  • 2021-11-04
  • 2021-11-24
  • 2021-11-01
  • 2021-10-09
  • 2021-05-26
  • 2022-02-23
  • 2021-10-20
  • 2021-10-11
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
  • 2021-05-19
  • 2021-06-23
  • 2022-01-21
  • 2021-11-17
相关资源
相似解决方案