GoCollections/concurrent/Lock.go
2022-03-23 14:28:41 +08:00

26 lines
321 B
Go

package concurrent
type (
Lock interface {
Lock()
Unlock()
}
RWLock interface {
Lock
RLock()
RUnlock()
}
)
func WithLock[R any](lock Lock, f func() R) R {
lock.Lock()
defer lock.Unlock()
return f()
}
func WithRLock[R any](lock RWLock, f func() R) R {
lock.RLock()
defer lock.RUnlock()
return f()
}