| 1234567891011121314151617181920212223242526272829303132333435363738394041 | package lockimport (	"fmt"	"sync"	"testing")func TestHighGranularityLock(t *testing.T) {	l := NewGranularityLock()	data := []int{}	add := func(key int) {		l.Lock(fmt.Sprintf("%d", key))		data[key]++		l.Unlock(fmt.Sprintf("%d", key))	}	for i := 0; i < 1000; i++ {		data = append(data, 0)	}	wg := sync.WaitGroup{}	for i := 0; i < 1000; i++ {		wg.Add(1)		go func() {			for j := 0; j < 1000; j++ {				add(j)			}			wg.Done()		}()	}	wg.Wait()	for _, v := range data {		if v != 1000 {			t.Fatal("data not equal")		}	}}
 |