35 lines
554 B
Go
35 lines
554 B
Go
package lockkey
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLock(t *testing.T) {
|
|
lk := NewLockByKey()
|
|
|
|
// Lock and unlock the same key multiple times.
|
|
for i := 0; i < 5; i++ {
|
|
go func() {
|
|
lk.Lock("key")
|
|
fmt.Println("locked")
|
|
lk.Unlock("key")
|
|
fmt.Println("unlocked")
|
|
}()
|
|
}
|
|
|
|
// Lock and unlock different keys.
|
|
lk.Lock("key1")
|
|
fmt.Println("locked key1")
|
|
lk.Unlock("key1")
|
|
fmt.Println("unlocked key1")
|
|
|
|
lk.Lock("key2")
|
|
fmt.Println("locked key2")
|
|
lk.Unlock("key2")
|
|
fmt.Println("unlocked key2")
|
|
|
|
time.Sleep(3 * time.Second)
|
|
}
|