编程小窍门: 一个简单的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)
}
相关推荐
Code哈哈笑2 小时前
Idea连接远程云服务器上的MySQL,开放云服务器端口
服务器·后端·mysql·spring
电子连接器CAE与高频分析4 小时前
Matlab添加标题title与标签lable
开发语言·matlab
努力弹琴的大风天4 小时前
MATLAB遇到内部问题,需要关闭,Crash Decoding : Disabled - No sandbox or build area path
开发语言·matlab
奋进的小暄5 小时前
数据结构(java)栈与队列
java·开发语言·数据结构
笺上山河梦6 小时前
文件操作(二进制文件)
开发语言·c++·学习·算法
有杨既安然8 小时前
Python自动化办公
开发语言·人工智能·深度学习·机器学习
King.6248 小时前
从 SQL2API 到 Text2API:开启数据应用开发的新征程
大数据·开发语言·数据库·sql·低代码
奇谱9 小时前
Quipus,LightRag的Go版本的实现
开发语言·后端·语言模型·golang·知识图谱
Asthenia04129 小时前
ThreadLocal:介绍、与HashMap的对比及深入剖析
后端