shm.go
@@ -3,7 +3,7 @@ import ( "errors" "fmt" "io" // "io" "time" @@ -53,17 +53,18 @@ return nil, errors.New("please open shm consumer first") } ch := make(chan []byte) ch := make(chan int) go func(){ n, err := s.rw.Read(s.data) if err == nil || err == io.EOF { s.data = s.data[:n:n] } ch <- s.data n, _ := s.rw.Read(s.data) ch <- n }() select{ case d := <-ch: return d, nil if d > 0{ data := make([]byte, d) copy(data, s.data) return data, nil } case <- time.After(3 * time.Second): return nil, errors.New("recv time out") }