编程小窍门: 一个简单的go mutex的小例子

本期小窍门用到了两个组件

  • mutex 这个类似其他语言的互斥锁
  • waitGroup 这个类似其他语言的信号量或者java的栅栏锁

示例如下

go 复制代码
func TestDoSomething04(t *testing.T) {
	total := 0
	var wg = sync.WaitGroup{}
	var mut = sync.Mutex{}   
	for i := 0; i < 5000; i++ {
		go func() {
			wg.Add(1)
			defer func() {
				mut.Unlock()
				wg.Done()
			}()
			mut.Lock()
			total++
		}()
	}
	wg.Wait()
	t.Log(total)
}
相关推荐
humcomm6 分钟前
AI 编程时代-全栈开发技术栈解析
开发语言·人工智能
人道领域18 分钟前
【黑马点评日记】社交平台用户关注功能全解析Feed流相关操作
java·开发语言·数据库·redis·python
欧雷殿28 分钟前
适配一人公司!家庭局域网 AI 工作台来了
后端·agent·aiops
ltl28 分钟前
梯度下降与反向传播
后端
老马952738 分钟前
opencode6-桌面应用实战1
人工智能·后端
xiaoshuaishuai839 分钟前
C# DeepSeek V4 与 V3对比
开发语言·c#·量子计算
shehuiyuelaiyuehao1 小时前
算法18,二分查找
java·开发语言·算法
掘金者阿豪1 小时前
NAS搭好了但找不到资源?用Pansou同时搜几十个网盘,帮我省了不少会员钱
后端
IT策士1 小时前
Python mcp研究:入门到精通
开发语言·python·qt
第五页的你1 小时前
Go语言--一篇通
后端