luci: go.chromium.org/luci/common/sync/mutexpool Index | Files

package mutexpool

import "go.chromium.org/luci/common/sync/mutexpool"

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

pool.go

type P Uses

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 Uses

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.

Package mutexpool imports 2 packages (graph) and is imported by 4 packages. Updated 2018-08-20. Refresh now. Tools for package owners.