...
Package semaphore
Overview ▹
Index ▹
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 only until ctx is done. On success, returns nil. On failure, returns ctx.Err() and leaves the semaphore unchanged.
If ctx is already done, Acquire may still succeed without blocking.
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.