執行緒同步——鎖
摘要:
一、基本概念
包含的包:“sync”
互斥鎖sync.Mutex
讀寫鎖sync.RWMutex
(一)互斥鎖sync.Mutex程式碼示例
package main
import (
"fmt"
"math/rand&...
一、基本概念
- 包含的包:“sync”
- 互斥鎖sync.Mutex
- 讀寫鎖sync.RWMutex
(一)互斥鎖sync.Mutex程式碼示例
package main import ( "fmt" "math/rand" "sync" "time" ) var lock sync.Mutex func main() { var a map[int]int rand.Seed(time.Now().Unix()) a = map[int]int{ 1: 4, 4: 3, 5: 5, 2: 5, 3: 1, } for i := 0; i < 3; i++ { go func(b map[int]int) { lock.Lock() b[2] = rand.Intn(100) lock.Unlock() }(a) } lock.Lock() fmt.Println(a) lock.Unlock() }
對於上面的程式,a作為一個公共的資源,所以對a的改變、讀寫等操作都需要加鎖。