From 0f27a87065cd0446e9a491357d440dc67e36ea0d Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期一, 20 五月 2019 16:20:34 +0800
Subject: [PATCH] add shm multi send one recv

---
 shm.go |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/shm.go b/shm.go
index 9611975..abb0ba5 100644
--- a/shm.go
+++ b/shm.go
@@ -5,6 +5,7 @@
 	"fmt"
 	"os"
 	"os/signal"
+	"sync"
 	"time"
 
 	"golang.org/x/sys/unix"
@@ -42,14 +43,14 @@
 	go shmSenderImpl(s)
 
 	c := make(chan os.Signal, 1)
-	signal.Notify(c, os.Interrupt, os.Kill, unix.SIGTERM)
+	signal.Notify(c, os.Interrupt, os.Kill, unix.SIGINT)
 	<-c
 
 	cancel()
 	s.Close()
 }
 
-func shmRecvImpl(c deliver.Deliver, url string, index int) {
+func shmRecvImpl(wg *sync.WaitGroup, c deliver.Deliver, url string, index int) {
 
 	var msg []byte
 	var err error
@@ -61,6 +62,7 @@
 	for {
 		select {
 		case <-ctx.Done():
+			wg.Done()
 			return
 		default:
 			msg, err = c.Recv()
@@ -85,15 +87,19 @@
 
 		// time.Sleep(10 * time.Millisecond)
 	}
+
 }
 
 func shmReciever(url string, count int) {
 
+	wg := sync.WaitGroup{}
+
 	var cs []deliver.Deliver
 	for i := 0; i < count; i++ {
+		wg.Add(1)
 		c := deliver.NewClient(deliver.Shm, url)
 		cs = append(cs, c)
-		go shmRecvImpl(c, url, i)
+		go shmRecvImpl(&wg, c, url, i)
 	}
 
 	c := make(chan os.Signal, 1)
@@ -101,6 +107,7 @@
 	<-c
 
 	cancel()
+	wg.Wait()
 	for _, v := range cs {
 		v.Close()
 	}

--
Gitblit v1.8.0