trusty (3) pg.3erl.gz

Provided by: erlang-manpages_16.b.3-dfsg-1ubuntu2.2_all bug

NAME

       pg - Distributed, Named Process Groups

DESCRIPTION

       This (experimental) module implements process groups. A process group is a group of processes that can be
       accessed by a common name. For example, a group named foobar can include a set of processes as members of
       this group and they can be located on different nodes.

       When messages are sent to the named group, all members of the group receive the message. The messages are
       serialized. If the process P1 sends the message M1 to the group,  and  process  P2  simultaneously  sends
       message  M2,  then  all  members of the group receive the two messages in the same order. If members of a
       group terminate, they are automatically removed from the group.

       This module is not complete. The module is inspired by the ISIS system and the causal order  protocol  of
       the  ISIS  system  should also be implemented. At the moment, all messages are serialized by sending them
       through a group master process.

EXPORTS

       create(PgName) -> ok | {error, Reason}

              Types:

                 PgName = term()
                 Reason = already_created | term()

              Creates an empty group named PgName on the current node.

       create(PgName, Node) -> ok | {error, Reason}

              Types:

                 PgName = term()
                 Node = node()
                 Reason = already_created | term()

              Creates an empty group named PgName on the node Node.

       join(PgName, Pid) -> Members

              Types:

                 PgName = term()
                 Pid = pid()
                 Members = [pid()]

              Joins the pid Pid to the process group PgName. Returns a list of all old members of the group.

       send(PgName, Msg) -> ok

              Types:

                 PgName = Msg = term()

              Sends the tuple {pg_message, From, PgName, Msg} to all members of the process group PgName.

              Failure: {badarg, {PgName, Msg}} if PgName is not a process group (a globally registered name).

       esend(PgName, Msg) -> ok

              Types:

                 PgName = Msg = term()

              Sends the tuple {pg_message, From, PgName, Msg} to all members of the process group PgName, except
              ourselves.

              Failure: {badarg, {PgName, Msg}} if PgName is not a process group (a globally registered name).

       members(PgName) -> Members

              Types:

                 PgName = term()
                 Members = [pid()]

              Returns a list of all members of the process group PgName.