package publock import ( "gitlink.org.cn/cloudream/jcs-pub/client/internal/publock/reqbuilder" "gitlink.org.cn/cloudream/jcs-pub/client/internal/publock/types" ) type Mutex struct { pub *PubLock locked LockedRequest } func (m *Mutex) Unlock() { m.pub.release(m.locked.ReqID) } type MutexBuilder struct { reqbuilder.LockRequestBuilder[*MutexBuilder] pub *PubLock } func (b *MutexBuilder) Lock(opt ...AcquireOptionFn) (*Mutex, error) { lkd, err := b.pub.acquire(types.LockRequest{ Locks: b.Locks, }, opt...) if err != nil { return nil, err } return &Mutex{ pub: b.pub, locked: lkd, }, nil }