TryLock 加锁失败立马返回
()
| 24 | |
| 25 | // TryLock 加锁失败立马返回 |
| 26 | func (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 加锁 等待到超时时间 |
| 46 | func (lock *EtcdLock) Lock() error { |