Dogpile consists of two subsystems, one building on top of the other.
dogpile provides the concept of a "dogpile lock", a control structure which allows a single thread
of execution to be selected as the "creator" of some resource, while allowing other threads of
execution to refer to the previous version of this resource as the creation proceeds; if there is no
previous version, then those threads block until the object is available.
dogpile.cache is a caching API which provides a generic interface to caching backends of any
variety, and additionally provides API hooks which integrate these cache backends with the locking
mechanism of dogpile.
Overall, dogpile.cache is intended as a replacement to the Beaker caching system, the internals of
which are written by the same author. All the ideas of Beaker which "work" are re- implemented in
dogpile.cache in a more efficient and succinct manner, and all the cruft (Beaker\'s internals were
first written in 2005) relegated to the trash heap.