优化并发模块

This commit is contained in:
duanhf2012
2023-02-22 15:13:51 +08:00
parent 8cc1b1afcb
commit 4783d05e75
2 changed files with 6 additions and 1 deletions

View File

@@ -69,6 +69,10 @@ func (c *Concurrent) AsyncDoByQueue(queueId int64, fn func(), cb func(err error)
return
}
if queueId != 0 {
queueId = queueId % maxTaskQueueSessionId+1
}
select {
case c.tasks <- task{queueId, fn, cb}:
}

View File

@@ -13,6 +13,7 @@ import (
)
var idleTimeout = 2 * time.Second
const maxTaskQueueSessionId = 10000
type dispatch struct {
minConcurrentNum int32
@@ -35,7 +36,7 @@ func (d *dispatch) open(minGoroutineNum int32, maxGoroutineNum int32, tasks chan
d.minConcurrentNum = minGoroutineNum
d.maxConcurrentNum = maxGoroutineNum
d.tasks = tasks
d.mapTaskQueueSession = make(map[int64]*queue.Deque[task], 1024)
d.mapTaskQueueSession = make(map[int64]*queue.Deque[task], maxTaskQueueSessionId)
d.workerQueue = make(chan task)
d.cbChannel = cbChannel
d.queueIdChannel = make(chan int64, cap(tasks))