| 12345678910111213141516171819202122232425262728293031323334 |
- package lock
- // Lock try lock
- type Lock struct {
- c chan struct{}
- }
- // NewLock generate a try lock
- func NewLock() Lock {
- var l Lock
- l.c = make(chan struct{}, 1)
- l.c <- struct{}{}
- return l
- }
- // Lock try lock, return lock result
- func (l Lock) Lock() bool {
- lockResult := false
- select {
- case <-l.c:
- lockResult = true
- default:
- }
- return lockResult
- }
- // Unlock , Unlock the try lock
- func (l Lock) Unlock() {
- l.c <- struct{}{}
- }
- func (l Lock) Close() {
- close(l.c)
- }
|