Browse Source

optimize pubsub.Publish function

Signed-off-by: Shijiang Wei <mountkin@gmail.com>
Shijiang Wei 9 years ago
parent
commit
1e0f1ec525
1 changed files with 5 additions and 1 deletions
  1. 5 1
      pkg/pubsub/publisher.go

+ 5 - 1
pkg/pubsub/publisher.go

@@ -64,10 +64,14 @@ func (p *Publisher) Evict(sub chan interface{}) {
 // Publish sends the data in v to all subscribers currently registered with the publisher.
 // Publish sends the data in v to all subscribers currently registered with the publisher.
 func (p *Publisher) Publish(v interface{}) {
 func (p *Publisher) Publish(v interface{}) {
 	p.m.RLock()
 	p.m.RLock()
+	if len(p.subscribers) == 0 {
+		p.m.RUnlock()
+		return
+	}
+
 	wg := new(sync.WaitGroup)
 	wg := new(sync.WaitGroup)
 	for sub, topic := range p.subscribers {
 	for sub, topic := range p.subscribers {
 		wg.Add(1)
 		wg.Add(1)
-
 		go p.sendTopic(sub, topic, v, wg)
 		go p.sendTopic(sub, topic, v, wg)
 	}
 	}
 	wg.Wait()
 	wg.Wait()