⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Go sync包:并发安全与同步原语

深入理解Go sync包中的Mutex、WaitGroup、Once、Cond等同步工具,掌握并发编程的核心技巧。 · 难度:入门 · +15XP

sync包概述

Go的sync包提供了基本的同步原语,用于在多个goroutine之间协调访问共享资源。最常用的包括Mutex(互斥锁)、RWMutex(读写锁)、WaitGroup(等待组)、Once(一次性执行)和Cond(条件变量)。

Mutex 使用示例

var mu sync.Mutex
var counter int

func increment() { mu.Lock() counter++ mu.Unlock() }

WaitGroup 用法

var wg sync.WaitGroup
for i := 0; i < 5; i++ {
    wg.Add(1)
    go func(i int) {
        defer wg.Done()
        fmt.Println(i)
    }(i)
}
wg.Wait()
类型用途注意事项
Mutex保护临界区不可复制,使用指针传递
RWMutex读多写少场景写锁优先级高
Once单次初始化内部使用Mutex和atomic

练习提示

请尝试用Mutex保护一个map,实现安全的并发读写。注意不要忘记调用Unlock,可以使用defer简化。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 142 篇
0 完成
🔥 0