go併發基礎數據加鎖解鎖

package main

// go 攜程共享 數據
// 加鎖解鎖操做
// 同步鎖
import (
	"sync"
	"fmt"
)
func computed (data *int, lock *sync.Mutex){
	lock.Lock() // 加鎖霸佔數據
	*data++
	lock.Unlock() // 解鎖讓出數據
}

func main() {
	var data int = 0
	lock :=&sync.Mutex{}
	for i:=0;i<10;i++ { // 啓動10個攜程
		go computed(&data,lock)
	}

	for {
		lock.Lock()
		c:=data
		lock.Unlock()
		if c >= 10 {
			fmt.Println(data)
			break
		}
	}
}
相關文章
相關標籤/搜索