[erlang-questions] Classification of concurrency patterns

Guy Wiener <>
Sat May 15 10:49:18 CEST 2010

Hello Joe, and everyone on the Erlang list,
A colleague of mine commented that this list contains only transactional
patterns (i.e, take data, process it and output it), but no reactive
patterns (i.e, a system that responds to events over time without a single
output or a predefined point of termination).

One can observe several patterns for parallel reactive architectures, namely
by the way the process collaborate:

1) Clique - Every process communicate with almost any other process. Each
message includes the sender, to distinguish from other messages.
2) Broadcast - Processes do not collaborate with other specific processes,
but broadcast messages without expecting a specific reply.
3) Subscribe/Notify - Processes broadcast messages to other pre-subscribed
4) Star - "Peripheral" processes collaborate through a small group
(potentially just one) of "central" processes, who decide for the rest what
to do.

One can also observe between two kinds of parallel reactive behavioral

1) Independent - Each process decides for itself what is the next step,
regardless of other processes.
2) Consensus - All processes try to reach some agreement on the next step
(often using a broadcast or star pattern).

Would you consider these to be parallel patterns?

Guy Wiener.

More information about the erlang-questions mailing list