fix locking of socket pool

This commit is contained in:
Dominic Wong 2020-05-27 20:18:26 +01:00
parent 1da8a640da
commit 27e41c4ad5

View File

@ -19,12 +19,18 @@ func (p *Pool) Get(id string) (*Socket, bool) {
} }
p.RUnlock() p.RUnlock()
// create new socket
socket = New(id)
// save socket // save socket
p.Lock() p.Lock()
defer p.Unlock()
// double checked locking
socket, ok = p.pool[id]
if ok {
return socket, ok
}
// create new socket
socket = New(id)
p.pool[id] = socket p.pool[id] = socket
p.Unlock()
// return socket // return socket
return socket, false return socket, false
} }