编程小窍门: 一个简单的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)
}
相关推荐
焰火19991 分钟前
[Java]Redisson的分布式锁及看门狗机制
java·后端
木易士心7 分钟前
AI 在数据库操作中的各类应用场景、方案与实践指南
后端
兮兮能吃能睡10 分钟前
资料片:R语言中常见的英文术语及其含义
开发语言·r语言
zz-zjx17 分钟前
JVM垃圾收集器详解(jdk21+25实战版)
java·开发语言·jvm
郝学胜-神的一滴23 分钟前
Linux系统函数link、unlink与dentry的关系及使用注意事项
linux·运维·服务器·开发语言·前端·c++
赵杰伦cpp25 分钟前
list的迭代器
开发语言·数据结构·c++·算法·链表·list
绝无仅有1 小时前
面试真实经历某商银行大厂Java问题和答案总结(七)
后端·面试·github
绝无仅有1 小时前
面试真实经历某商银行大厂缓存Redis问题和答案总结(一)
后端·面试·github
IT_陈寒1 小时前
Python性能翻倍的5个冷门技巧:从GIL逃逸到内存视图的实战优化指南
前端·人工智能·后端
_extraordinary_1 小时前
Java Spring配置
java·开发语言·spring