github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgProcessMutex/mutex_test.go (about) 1 package kmgProcessMutex_test 2 3 import ( 4 "fmt" 5 "github.com/bronze1man/kmg/kmgProcessMutex" 6 "sync" 7 "testing" 8 ) 9 10 //期望输出结果应该是 Lock N 和 UnLock N 成对出现,一对 Lock 和 UnLock 之间是的操作是原子的,不会 Data Race: 11 //Lock n0 12 //n0 13 //UnLock n0 14 //Lock n9 15 //n9 16 //UnLock n9 17 //... 18 func TestFileMutex(t *testing.T) { 19 wg := &sync.WaitGroup{} 20 for i := 0; i < 10; i++ { 21 wg.Add(1) 22 go func(i int) { 23 l := &kmgProcessMutex.FileMutex{Name: "abc"} 24 l.Lock() 25 fmt.Println("Lock", i) 26 l.UnLock() 27 fmt.Println("UnLock", i) 28 wg.Done() 29 }(i) 30 } 31 wg.Wait() 32 }