From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Wed, 18 Nov 2020 04:05:17 +0000 (+0800) Subject: Update Msgq.go X-Git-Tag: v0.3.0~2^2~1 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=7bec003232e15978bf633c925ee93f87ab907f9b;p=part%2F.git Update Msgq.go --- diff --git a/msgq/Msgq.go b/msgq/Msgq.go index d0fdc2e..169efe8 100644 --- a/msgq/Msgq.go +++ b/msgq/Msgq.go @@ -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 }