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

}