MCPcopy
hub / github.com/hwholiday/learning_tools / TryLock

Method TryLock

etcd/lock/etcd_lock.go:26–43  ·  view source on GitHub ↗

TryLock 加锁失败立马返回

()

Source from the content-addressed store, hash-verified

24
25// TryLock 加锁失败立马返回
26func (lock *EtcdLock) TryLock() error {
27 lock.ctx, lock.cancel = context.WithTimeout(context.Background(), time.Duration(lock.timeout)*time.Second)
28 response, err := lock.client.Grant(lock.ctx, lock.timeout)
29 if err != nil {
30 return err
31 }
32 lock.session, err = concurrency.NewSession(lock.client,
33 concurrency.WithLease(response.ID),
34 concurrency.WithContext(lock.ctx))
35 if err != nil {
36 return err
37 }
38 lock.mutex = concurrency.NewMutex(lock.session, lock.key)
39 if err = lock.mutex.TryLock(lock.ctx); err != nil {
40 return err
41 }
42 return nil
43}
44
45// Lock 加锁 等待到超时时间
46func (lock *EtcdLock) Lock() error {

Callers 1

TestEtcdLock_TryLockFunction · 0.95

Calls 1

TryLockMethod · 0.65

Tested by 1

TestEtcdLock_TryLockFunction · 0.76