溫馨提示×

Go語言互斥鎖使用復雜嗎

小樊
81
2024-11-02 19:18:32
欄目: 編程語言

Go語言的互斥鎖(Mutex)使用起來相對簡單?;コ怄i是一種同步原語,用于在并發(fā)編程中保護共享資源免受多個goroutine的訪問。Go語言的sync包提供了互斥鎖的實現(xiàn)。

以下是一個簡單的示例,展示了如何在Go語言中使用互斥鎖:

package main

import (
	"fmt"
	"sync"
	"time"
)

var (
	counter = 0
	mutex   sync.Mutex
)

func increment() {
	mutex.Lock()
	counter++
	mutex.Unlock()
}

func main() {
	var wg sync.WaitGroup

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

	wg.Wait()
	fmt.Println("Counter:", counter)
}

在這個示例中,我們定義了一個全局變量counter和一個互斥鎖mutex。increment函數(shù)用于遞增counter,但在訪問之前,我們先使用mutex.Lock()加鎖,訪問完成后使用mutex.Unlock()解鎖。在main函數(shù)中,我們創(chuàng)建了1000個goroutine并發(fā)地調(diào)用increment函數(shù),并使用sync.WaitGroup等待所有g(shù)oroutine完成。最后,我們打印出counter的值,它應該是1000。

總之,Go語言的互斥鎖使用起來相對簡單,可以有效地保護共享資源免受并發(fā)訪問的影響。

0