共計 631 個字符,預計需要花費 2 分鐘才能閱讀完成。
在 Go 語言中,可以使用 sync 包中的 Mutex 類型來實現鎖機制。Mutex 是互斥鎖,可以用來保護臨界區,防止多個 goroutine 同時訪問共享資源。
下面是一個使用 Mutex 實現鎖機制的示例代碼:
package main
import ("fmt"
"sync"
"time"
)
var (count int
lock sync.Mutex
)
func main() {wg := sync.WaitGroup{}
for i := 0; i < 10; i++ {wg.Add(1)
go increment(&wg)
}
wg.Wait()
fmt.Println("Final count:", count)
}
func increment(wg *sync.WaitGroup) {lock.Lock() // 加鎖
defer lock.Unlock() // 解鎖
defer wg.Done()
// 模擬耗時操作
time.Sleep(time.Millisecond * 100)
count++
}
在上述代碼中,首先創建了一個全局變量 count 和一個 Mutex 類型的 lock 變量。然后,在 increment 函數中,使用 lock.Lock() 方法對臨界區進行加鎖,確保只有一個 goroutine 可以進入臨界區。在臨界區內,對 count 進行了遞增操作。最后,使用 lock.Unlock() 方法對臨界區進行解鎖。
運行以上代碼,可以得到正確的遞增結果,并且保證了多個 goroutine 不會同時訪問臨界區,實現了鎖機制。
丸趣 TV 網 – 提供最優質的資源集合!
正文完