Merge pull request #1661 from micro/bugfix/sock_pool_threads
fix locking of socket pool
This commit is contained in:
commit
3f354f3c30
@ -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…
Reference in New Issue
Block a user