From 076f5977bda1df00d77bd3981047a0b835d905b1 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sat, 28 Dec 2019 23:53:09 +0100 Subject: [PATCH] use RWMutex instead of Mutex --- main.go | 10 +++++----- rtsp_client.go | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/main.go b/main.go index 6fef8441..05819743 100644 --- a/main.go +++ b/main.go @@ -16,7 +16,7 @@ type program struct { rtspPort int rtpPort int rtcpPort int - mutex sync.Mutex + mutex sync.RWMutex rtspl *rtspListener rtpl *udpListener rtcpl *udpListener @@ -36,8 +36,8 @@ func newProgram(rtspPort int, rtpPort int, rtcpPort int) (*program, error) { var err error p.rtpl, err = newUdpListener(rtpPort, "RTP", func(l *udpListener, buf []byte) { - p.mutex.Lock() - defer p.mutex.Unlock() + p.mutex.RLock() + defer p.mutex.RUnlock() for c := range p.clients { if c.state == "PLAY" { l.nconn.WriteTo(buf, &net.UDPAddr{ @@ -52,8 +52,8 @@ func newProgram(rtspPort int, rtpPort int, rtcpPort int) (*program, error) { } p.rtcpl, err = newUdpListener(rtcpPort, "RTCP", func(l *udpListener, buf []byte) { - p.mutex.Lock() - defer p.mutex.Unlock() + p.mutex.RLock() + defer p.mutex.RUnlock() for c := range p.clients { if c.state == "PLAY" { l.nconn.WriteTo(buf, &net.UDPAddr{ diff --git a/rtsp_client.go b/rtsp_client.go index 4f73223a..5ab7c886 100644 --- a/rtsp_client.go +++ b/rtsp_client.go @@ -125,8 +125,8 @@ func (c *rtspClient) run(wg sync.WaitGroup) { } sdp, err := func() ([]byte, error) { - c.p.mutex.Lock() - defer c.p.mutex.Unlock() + c.p.mutex.RLock() + defer c.p.mutex.RUnlock() if len(c.p.streamSdp) == 0 { return nil, fmt.Errorf("no one is streaming")