Fix a race condition when running the port allocator

This commit is contained in:
Solomon Hykes 2013-04-05 13:03:04 -07:00
Родитель a4fc52305a
Коммит d32f184696
1 изменённых файлов: 1 добавлений и 4 удалений

Просмотреть файл

@ -167,10 +167,6 @@ type PortAllocator struct {
}
func (alloc *PortAllocator) runFountain() {
if alloc.fountain != nil {
return
}
alloc.fountain = make(chan int)
for {
for port := portRangeStart; port < portRangeEnd; port++ {
alloc.fountain <- port
@ -208,6 +204,7 @@ func (alloc *PortAllocator) Acquire(port int) (int, error) {
func newPortAllocator() (*PortAllocator, error) {
allocator := &PortAllocator{
inUse: make(map[int]struct{}),
fountain: make(chan int),
}
go allocator.runFountain()
return allocator, nil