mirror of
https://github.com/lkmio/lkm.git
synced 2025-10-05 07:06:57 +08:00
等待队列增加锁保护
This commit is contained in:
@@ -11,10 +11,11 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func AddSinkToWaitingQueue(streamId string, sink ISink) {
|
func AddSinkToWaitingQueue(streamId string, sink ISink) {
|
||||||
|
mutex.Lock()
|
||||||
|
defer mutex.Unlock()
|
||||||
|
|
||||||
m, ok := waitingSinks[streamId]
|
m, ok := waitingSinks[streamId]
|
||||||
if !ok {
|
if !ok {
|
||||||
mutex.Lock()
|
|
||||||
mutex.Unlock()
|
|
||||||
if m, ok = waitingSinks[streamId]; !ok {
|
if m, ok = waitingSinks[streamId]; !ok {
|
||||||
m = make(map[SinkId]ISink, 64)
|
m = make(map[SinkId]ISink, 64)
|
||||||
waitingSinks[streamId] = m
|
waitingSinks[streamId] = m
|
||||||
@@ -25,6 +26,9 @@ func AddSinkToWaitingQueue(streamId string, sink ISink) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func RemoveSinkFromWaitingQueue(sourceId string, sinkId SinkId) (ISink, bool) {
|
func RemoveSinkFromWaitingQueue(sourceId string, sinkId SinkId) (ISink, bool) {
|
||||||
|
mutex.Lock()
|
||||||
|
defer mutex.Unlock()
|
||||||
|
|
||||||
m, ok := waitingSinks[sourceId]
|
m, ok := waitingSinks[sourceId]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, false
|
return nil, false
|
||||||
@@ -39,6 +43,9 @@ func RemoveSinkFromWaitingQueue(sourceId string, sinkId SinkId) (ISink, bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func PopWaitingSinks(sourceId string) []ISink {
|
func PopWaitingSinks(sourceId string) []ISink {
|
||||||
|
mutex.Lock()
|
||||||
|
defer mutex.Unlock()
|
||||||
|
|
||||||
source, ok := waitingSinks[sourceId]
|
source, ok := waitingSinks[sourceId]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil
|
return nil
|
||||||
|
Reference in New Issue
Block a user