optimized broadcast loop

- use sync.Cond.Broadcast