mirror https://github.com/uwiger/gproc
![]() |
14 years ago | |
---|---|---|
doc | 14 years ago | |
include | 14 years ago | |
patches | 16 years ago | |
priv | 15 years ago | |
reference | 14 years ago | |
src | 14 years ago | |
test | 14 years ago | |
.gitignore | 14 years ago | |
Makefile | 14 years ago | |
README.md | 14 years ago | |
rebar | 14 years ago | |
rebar.config | 14 years ago |
Extended process dictionary.
Authors: Ulf Wiger (ulf.wiger@erlang-solutions.com
), Joseph Wayne Norton (norton@geminimobile.com
).
Extended process dictionary
Gproc is a process dictionary for Erlang, which provides a number of useful features beyond what the built-in dictionary has:
Use any term as a process alias
Register a process under several aliases
Non-unique properties can be registered simultaneously by many processes
QLC and match specification interface for efficient queries on the dictionary
Await registration, let's you wait until a process registers itself
Atomically give away registered names and properties to another process
Counters, and aggregated counters, which automatically maintain the total of all counters with a given name
Global registry, with all the above functions applied to a network of nodes
An interesting application of gproc is building publish/subscribe patterns. Example:
subscribe(EventType) -> %% Gproc notation: {p, l, Name} means {(p)roperty, (l)ocal, Name} gproc:reg({p, l, {?MODULE, EventType}}). notify(EventType, Msg) -> Key = {?MODULE, EventType}, gproc:send({p, l, Key}, {self(), Key, Msg}).
Gproc has a QuickCheck test suite, covering a fairly large part of the local gproc functionality, although none of the global registry. It requires a commercial EQC license, but rebar is smart enough to detect whether EQC is available, and if it isn't, the code in gproc_eqc.erl will be "defined away".
There is also an eunit suite, covering the basic operations for local and global gproc.
By default, ./rebar doc
generates Github-flavored Markdown files.If you want to change this, remove the edoc_opts
line from rebar.config
.
Gproc was first introduced at the ACM SIGPLAN Erlang Workshop in Freiburg 2007 (Paper available here).
gproc |
gproc_app |
gproc_dist |
gproc_init |
gproc_lib |
gproc_sup |