31 lines
593 B
Go
31 lines
593 B
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"sync"
|
||
)
|
||
|
||
var (
|
||
sharedCounter int // 共享资源
|
||
mu sync.Mutex // 互斥锁
|
||
wg sync.WaitGroup
|
||
)
|
||
|
||
// 对共享计数器进行累加
|
||
func muIncrement() {
|
||
defer wg.Done()
|
||
for i := 0; i < 1000; i++ {
|
||
mu.Lock() // 加锁:进入临界区
|
||
sharedCounter++
|
||
mu.Unlock() // 解锁:退出临界区
|
||
}
|
||
}
|
||
func main() {
|
||
wg.Add(5) // 启动5个goroutine并发修改
|
||
for i := 0; i < 5; i++ {
|
||
go muIncrement()
|
||
}
|
||
wg.Wait() // 等待所有goroutine完成
|
||
fmt.Printf("最终计数器值: %d(预期:5000)\n", sharedCounter)
|
||
}
|