GitHub - subchen/go-trylock: TryLock support on read-write lock for Golang (original) (raw)
import ( "context" "time" "errors" "github.com/subchen/go-trylock/v2" )
var mu = trylock.New()
func goroutineWrite() error { if ok := mu.TryLock(context.Background()); !ok { return errors.New("timeout, cannot TryLock !!!") } defer mu.Unlock()
// write something}
func goroutineWriteTimeout() error { if ok := mu.TryLockTimeout(1 * time.Second); !ok { return errors.New("timeout, cannot TryLock !!!") } defer mu.Unlock()
// write something}
func goroutineRead() { if ok := mu.RTryLock(context.Background()); !ok { return errors.New("timeout, cannot RTryLock !!!") } defer mu.RUnlock()
// read something}
func goroutineReadTimeout() { if ok := mu.RTryLockTimeout(1 * time.Second); !ok { return errors.New("timeout, cannot RTryLock !!!") } defer mu.RUnlock()
// read something}