| 123456789101112131415161718192021222324 |
- package client
- import (
- "sync/atomic"
- )
- // TryLock implement the classic "try-lock" operation.
- type TryLock struct {
- n int32
- }
- // Lock tries to lock the try-lock. If successful, it returns true.
- // Otherwise, it returns false immedidately.
- func (c *TryLock) Lock() error {
- if !atomic.CompareAndSwapInt32(&c.n, 0, 1) {
- return errDoubleLock
- }
- return nil
- }
- // Unlock unlocks the try-lock.
- func (c *TryLock) Unlock() {
- atomic.StoreInt32(&c.n, 0)
- }
|