读写互斥锁(RWMutex):读写互斥锁是互斥锁的一种扩展,可以实现多个goroutine同时读取共享变量,但只允许一个goroutine进行写入。通过使用读写互斥锁,可以在读多写少的场景中提高并发性能。例如:

package main

import (
	"fmt"
	"sync"
)

var (
	count int
	mutex sync.RWMutex
)

func readCount() {
	mutex.RLock()
	defer mutex.RUnlock()
	fmt.Println("Count:", count)
}

func increment() {
	mutex.Lock()
	defer mutex.Unlock()
	count++
}

func main() {
	var wg sync.WaitGroup

	for i := 0; i < 10; i++ {
		wg.Add(1)
		go func() {
			defer wg.Done()
			readCount()
		}()
	}

	for i := 0; i < 5; i++ {
		wg.Add(1)
		go func() {
			defer wg.Done()
			increment()
		}()
	}

	wg.Wait()
}
countmutexreadCountRLock()countincrementLock()count