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.

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.