3 type Semaphore struct {
7 func NewSemaphore(size int) Semaphore {
9 ch: make(chan struct{}, size),
13 func (sem Semaphore) Acquire() {
17 func (sem Semaphore) AcquireMaybe() bool {
19 case sem.ch <- struct{}{}:
26 func (sem Semaphore) Release() {
30 func (sem Semaphore) Len() int {
34 func (sem Semaphore) Cap() int {