编程小窍门: 一个简单的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)
}
相关推荐
南汐汐月11 小时前
重生归来,我要成功 Python 高手--day33 决策树
开发语言·python·决策树
清水11 小时前
Spring Boot企业级开发入门
java·spring boot·后端
星释11 小时前
Rust 练习册 :Proverb与字符串处理
开发语言·后端·rust
工会主席-阿冰11 小时前
数据索引是无序时,直接用这个数据去画图的话,显示的图是错误的
开发语言·python·数据挖掘
麦麦鸡腿堡11 小时前
Java_TreeSet与TreeMap源码解读
java·开发语言
gladiator+11 小时前
Java中的设计模式------策略设计模式
java·开发语言·设计模式
Lucifer__hell12 小时前
【python+tkinter】图形界面简易计算器的实现
开发语言·python·tkinter
2301_8129148712 小时前
py day34 装饰器
开发语言·python
ZZHHWW12 小时前
RocketMQ vs Kafka01 - 存储架构深度对比
后端
卡提西亚12 小时前
C++笔记-24-文件读写操作
开发语言·c++·笔记