Advertisement
Guest User

Untitled

a guest
Jul 15th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.62 KB | None | 0 0
  1. type MemoryJobNotifier struct {
  2.     conds map[string] *sync.Cond
  3.     lock sync.Mutex
  4. }
  5.  
  6. func (jn MemoryJobNotifier) Wait(name string) error {
  7.     jn.getCond(name).Wait()
  8.     return nil
  9. }
  10.  
  11. func (jn MemoryJobNotifier) getCond(name string) *sync.Cond {
  12.     jn.lock.Lock()
  13.     defer jn.lock.Unlock()
  14.     cond, ok := jn.conds[name]
  15.     if !ok {
  16.         cond = sync.NewCond(&sync.Mutex{})
  17.         jn.conds[name] = cond
  18.     }
  19.     return cond
  20. }
  21.  
  22. func (jn MemoryJobNotifier) Broadcast(name string) error {
  23.     jn.lock.Lock()
  24.     defer jn.lock.Lock()
  25.     cond, ok := jn.conds[name]
  26.     if !ok {
  27.         return nil
  28.     }
  29.     cond.Broadcast()
  30.     delete(jn.conds, name)
  31.     return nil
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement