首次提交:初始化项目代码

This commit is contained in:
sunct
2026-07-31 15:18:32 +08:00
commit d6393266b0
193 changed files with 14287 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
package main
import (
"fmt"
"sync"
"time"
)
var (
config string // 共享配置(读多写少)
rwmu sync.RWMutex // 读写锁
wg2 sync.WaitGroup
)
// 读操作:使用读锁(允许多个并发)
func readConfig(readerID int) {
defer wg2.Done()
rwmu.RLock() // 加读锁
defer rwmu.RUnlock() // 释放读锁
// 模拟读操作耗时
time.Sleep(100 * time.Millisecond)
fmt.Printf("读者%d: 读取配置=%s\n", readerID, config)
}
// 写操作:使用写锁(独占)
func writeConfig(writerID int, newConfig string) {
defer wg2.Done()
rwmu.Lock() // 加写锁
defer rwmu.Unlock() // 释放写锁
// 模拟写操作耗时
time.Sleep(300 * time.Millisecond)
config = newConfig
fmt.Printf("写者%d: 更新配置=%s\n", writerID, config)
}
func main() {
config = "初始配置"
// 启动10个读goroutine(并发执行)
for i := 0; i < 10; i++ {
wg2.Add(1)
go readConfig(i)
}
// 启动2个写goroutine(串行执行,且阻塞读)
for i := 0; i < 2; i++ {
wg2.Add(1)
go writeConfig(i, fmt.Sprintf("新配置%d", i+1))
}
wg2.Wait()
fmt.Println("所有操作完成")
}