Lock 加锁 等待到超时时间
()
| 44 | |
| 45 | // Lock 加锁 等待到超时时间 |
| 46 | func (lock *EtcdLock) Lock() error { |
| 47 | lock.ctx, lock.cancel = context.WithTimeout(context.Background(), time.Duration(lock.timeout)*time.Second) |
| 48 | response, err := lock.client.Grant(lock.ctx, lock.timeout) |
| 49 | if err != nil { |
| 50 | return err |
| 51 | } |
| 52 | lock.session, err = concurrency.NewSession(lock.client, |
| 53 | concurrency.WithLease(response.ID), |
| 54 | concurrency.WithContext(lock.ctx)) |
| 55 | if err != nil { |
| 56 | return err |
| 57 | } |
| 58 | lock.mutex = concurrency.NewMutex(lock.session, lock.key) |
| 59 | if err = lock.mutex.Lock(lock.ctx); err != nil { |
| 60 | return err |
| 61 | } |
| 62 | return nil |
| 63 | } |
| 64 | |
| 65 | func (lock *EtcdLock) UnLock() error { |
| 66 | _ = lock.session.Close() |