| 12345678910111213141516171819202122232425262728293031323334 | package gls// though this could probably be better at keeping ids smaller, the goal of// this class is to keep a registry of the smallest unique integer ids// per-process possibleimport (	"sync")type idPool struct {	mtx      sync.Mutex	released []uint	max_id   uint}func (p *idPool) Acquire() (id uint) {	p.mtx.Lock()	defer p.mtx.Unlock()	if len(p.released) > 0 {		id = p.released[len(p.released)-1]		p.released = p.released[:len(p.released)-1]		return id	}	id = p.max_id	p.max_id++	return id}func (p *idPool) Release(id uint) {	p.mtx.Lock()	defer p.mtx.Unlock()	p.released = append(p.released, id)}
 |