go并发: 使用独占锁(排他锁)

一,代码:

// 入口函数
func main() {

    lock:=sync.Mutex{}

    go func() {
        lock.Lock()
        defer lock.Unlock()
        for i:=1; i<=5; i++ {
            time.Sleep(time.Millisecond)
            fmt.Println(i)
        }
    }()

    go func() {
        lock.Lock()
        defer lock.Unlock()
        for i:=1; i<=5; i++ {
            time.Sleep(time.Millisecond)
            fmt.Println(i*10)
        }
    }()

    time.Sleep(time.Second)
}

 

二,测试效果:

未加锁

$ go run main.go 
1
10
20
2
3
30
40
4
5
50

加锁后:

$ go run main.go 
10
20
30
40
50
1
2
3
4
5

 

posted @ 2025-03-09 15:10  刘宏缔的架构森林  阅读(24)  评论(0)    收藏  举报