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