fix locking of socket pool
This commit is contained in:
parent
1da8a640da
commit
27e41c4ad5
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user