Back to godoc.org

Package mutexpool

v0.0.0 (d4769a7)
Latest Go to latest
Published: Aug 1, 2020 | License: Apache-2.0 | Module: github.com/luci/luci-go

Overview

Package mutexpool implements P, a pool of keyed mutexes. These mutexes are created on-demand and deleted when no longer referenced, so the pool's maximum size is a function of the maximum number of concurrent mutexes held at any given time.

Package mutexpool is useful when coordinating access to resources that are not managed by the accessor such as remote resource accesses.

Index

Package Files

type P

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

P is a pool of keyed mutexes. The zero value is a valid empty pool.

A user can grab an arbitrary Mutex's lock by calling WithMutex with a key. If something else currently holds that Mutex's lock, WithMutex will block until it can claim the lock. When a key is no longer in use, it will be removed from P.

func (*P) WithMutex

func (pc *P) WithMutex(key interface{}, fn func())

WithMutex locks the Mutex matching the specified key and executes fn while holding its lock.

If a mutex for key doesn't exist, one will be created, and will be automatically cleaned up when no longer referenced.

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier