goexpirelock/lock_test.go
2025-04-18 09:47:46 +08:00

42 lines
661 B
Go

package expirelock
import (
"fmt"
"sync"
"testing"
"time"
)
func TestLock_Lock(t *testing.T) {
lock(NewBlock())
}
func TestLock_SpinLock(t *testing.T) {
lock(NewSpin())
}
func lock(lock ExpireLocker) {
wg := sync.WaitGroup{}
for i := 0; i < 10; i++ {
wg.Add(1)
go func(i int) {
lock.Lock(1 * time.Second)
fmt.Printf("go: %d, lock\n", i)
time.Sleep(1 * time.Second)
fmt.Println(lock.Unlock())
fmt.Printf("go: %d, unlock\n", i)
wg.Done()
}(i)
}
lock.Lock(0)
fmt.Println(lock.Unlock())
//lock.Lock(1 * time.Second)
time.Sleep(1500 * time.Millisecond)
lock.Lock(1 * time.Second)
fmt.Println(lock.Unlock())
wg.Wait()
}