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

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

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

示例如下

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)
}

猜你喜欢

转载自blog.csdn.net/qq_33709508/article/details/132287405
今日推荐