1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-08 05:47:07 +09:00
anytype-heart/util/mutex/convenience.go

30 lines
452 B
Go

package mutex
import "sync"
func WithLock[T any](mutex sync.Locker, fun func() T) T {
mutex.Lock()
defer mutex.Unlock()
return fun()
}
type Value[T any] struct {
lock sync.Mutex
value T
}
func NewValue[T any](value T) *Value[T] {
return &Value[T]{value: value}
}
func (v *Value[T]) Get() T {
v.lock.Lock()
defer v.lock.Unlock()
return v.value
}
func (v *Value[T]) Set(value T) {
v.lock.Lock()
defer v.lock.Unlock()
v.value = value
}