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  }