Ver Fonte

fix: close channel

lijian há 2 anos atrás
pai
commit
9f127689fa
1 ficheiros alterados com 7 adições e 2 exclusões
  1. 7 2
      pkg/ruleEngine/mailbox.go

+ 7 - 2
pkg/ruleEngine/mailbox.go

@@ -4,6 +4,7 @@ import (
 	"github.com/gogf/gf/container/gqueue"
 	"sparrow/pkg/protocol"
 	"sparrow/pkg/server"
+	"sync"
 	"sync/atomic"
 )
 
@@ -18,6 +19,8 @@ type MailBox struct {
 	busyState              int32
 	readySate              int32
 	throughPut             int // 处理的吞吐量
+	closed                 bool
+	mu                     sync.Mutex
 }
 
 const (
@@ -206,8 +209,10 @@ func (m *MailBox) BroadcastChildren(msg protocol.ActorMsg) error {
 }
 
 func (m *MailBox) destroy() error {
-	//m.highPriorityMessages.Close()
-	// m.normalPriorityMessages.Close()
+	m.mu.Lock()
+	defer m.mu.Unlock()
+	m.highPriorityMessages.Close()
+	m.normalPriorityMessages.Close()
 	m.setReadyStat(NOTREADY)
 	if err := m.actor.Destroy(); err != nil {
 		server.Log.Warnf("Failed to destroy actor :%s, err :%s", m.id, err.Error())