...

Package semaphore

import "cmd/vendor/golang.org/x/sync/semaphore"
Overview
Index

Overview ▾

Package semaphore provides a weighted semaphore implementation.

type Weighted

Weighted provides a way to bound concurrent access to a resource. The callers can request access with a given weight.

type Weighted struct {
    // contains filtered or unexported fields
}

func NewWeighted

func NewWeighted(n int64) *Weighted

NewWeighted creates a new weighted semaphore with the given maximum combined weight for concurrent access.

func (*Weighted) Acquire

func (s *Weighted) Acquire(ctx context.Context, n int64) error

Acquire acquires the semaphore with a weight of n, blocking until resources are available or ctx is done. On success, returns nil. On failure, returns ctx.Err() and leaves the semaphore unchanged.

func (*Weighted) Release

func (s *Weighted) Release(n int64)

Release releases the semaphore with a weight of n.

func (*Weighted) TryAcquire

func (s *Weighted) TryAcquire(n int64) bool

TryAcquire acquires the semaphore with a weight of n without blocking. On success, returns true. On failure, returns false and leaves the semaphore unchanged.