]> 127.0.0.1 Git - part/.git/commitdiff
Update Msgq.go
authorqydysky <32743305+qydysky@users.noreply.github.com>
Wed, 18 Nov 2020 04:05:17 +0000 (12:05 +0800)
committerGitHub <noreply@github.com>
Wed, 18 Nov 2020 04:05:17 +0000 (12:05 +0800)
msgq/Msgq.go

index d0fdc2e5066de751837f59b3bec0c85ed0572ca2..169efe8018f20144c45a688db8fe40adfe7da00b 100644 (file)
@@ -1,32 +1,29 @@
 package part
 
 type msgq struct {
-       o chan interface{}
-       men chan bool
+       d interface{}
+       i chan struct{}
+       o chan struct{}
 }
 
 func New() (*msgq) {
        l := new(msgq)
-       (*l).o = make(chan interface{},1e9)
-       (*l).men = make(chan bool,1e9)
+       (*l).i = make(chan struct{})
+       (*l).o = make(chan struct{})
+       close((*l).i)
        return l
 }
 
 func (m *msgq) Push(msg interface{}) {
-       num := len(m.men)
-       for len(m.men) != 0 {
-               <- m.men
-       }
-       for num > 0 {
-               m.o <- msg
-               num -= 1
-       }
-       for len(m.o) != 0 {
-               <- m.o
-       }
+       m.i = make(chan struct{})
+       m.d = msg
+       close(m.o)
+       m.o = make(chan struct{})
+       close(m.i)
 }
 
 func (m *msgq) Pull() (o interface{}) {
-       m.men <- true
-       return <- m.o
+       <- m.i
+       <- m.o
+       return m.d
 }