Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type MemoryJobNotifier struct {
- conds map[string] *sync.Cond
- lock sync.Mutex
- }
- func (jn MemoryJobNotifier) Wait(name string) error {
- jn.getCond(name).Wait()
- return nil
- }
- func (jn MemoryJobNotifier) getCond(name string) *sync.Cond {
- jn.lock.Lock()
- defer jn.lock.Unlock()
- cond, ok := jn.conds[name]
- if !ok {
- cond = sync.NewCond(&sync.Mutex{})
- jn.conds[name] = cond
- }
- return cond
- }
- func (jn MemoryJobNotifier) Broadcast(name string) error {
- jn.lock.Lock()
- defer jn.lock.Lock()
- cond, ok := jn.conds[name]
- if !ok {
- return nil
- }
- cond.Broadcast()
- delete(jn.conds, name)
- return nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement