| 12345678910111213141516171819202122232425262728 |
- package polling
- type Locker struct {
- locker chan struct{}
- }
- func NewLocker() *Locker {
- return &Locker{
- locker: make(chan struct{}, 1),
- }
- }
- func (l *Locker) Lock() {
- l.locker <- struct{}{}
- }
- func (l *Locker) TryLock() bool {
- select {
- case l.locker <- struct{}{}:
- return true
- default:
- return false
- }
- }
- func (l *Locker) Unlock() {
- <-l.locker
- }
|