aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/doc/src/pg.xml
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
committerErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
commit84adefa331c4159d432d22840663c38f155cd4c1 (patch)
treebff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/stdlib/doc/src/pg.xml
downloadotp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz
otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2
otp-84adefa331c4159d432d22840663c38f155cd4c1.zip
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/stdlib/doc/src/pg.xml')
-rw-r--r--lib/stdlib/doc/src/pg.xml132
1 files changed, 132 insertions, 0 deletions
diff --git a/lib/stdlib/doc/src/pg.xml b/lib/stdlib/doc/src/pg.xml
new file mode 100644
index 0000000000..66b9702ae0
--- /dev/null
+++ b/lib/stdlib/doc/src/pg.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>1996</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>pg</title>
+ <prepared></prepared>
+ <docno></docno>
+ <date></date>
+ <rev></rev>
+ </header>
+ <module>pg</module>
+ <modulesummary>Distributed, Named Process Groups</modulesummary>
+ <description>
+ <p>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 <c>foobar</c> can include a set
+ of processes as members of this group and they can be located on
+ different nodes.</p>
+ <p>When messages are sent to the named group, all members of
+ the group receive the message. The messages are serialized. If
+ the process <c>P1</c> sends the message <c>M1</c> to the group,
+ and process <c>P2</c> simultaneously sends message <c>M2</c>, 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.</p>
+ <p>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.</p>
+ </description>
+ <funcs>
+ <func>
+ <name>create(PgName) -> ok | {error, Reason}</name>
+ <fsummary>Create an empty group</fsummary>
+ <type>
+ <v>PgName = term()</v>
+ <v>Reason = already_created | term()</v>
+ </type>
+ <desc>
+ <p>Creates an empty group named <c>PgName</c> on the current
+ node.</p>
+ </desc>
+ </func>
+ <func>
+ <name>create(PgName, Node) -> ok | {error, Reason}</name>
+ <fsummary>Create an empty group on another node</fsummary>
+ <type>
+ <v>PgName = term()</v>
+ <v>Node = node()</v>
+ <v>Reason = already_created | term()</v>
+ </type>
+ <desc>
+ <p>Creates an empty group named <c>PgName</c> on the node
+ <c>Node</c>.</p>
+ </desc>
+ </func>
+ <func>
+ <name>join(PgName, Pid) -> Members</name>
+ <fsummary>Join a pid to a process group</fsummary>
+ <type>
+ <v>PgName = term()</v>
+ <v>Pid = pid()</v>
+ <v>Members = [pid()]</v>
+ </type>
+ <desc>
+ <p>Joins the pid <c>Pid</c> to the process group <c>PgName</c>.
+ Returns a list of all old members of the group.</p>
+ </desc>
+ </func>
+ <func>
+ <name>send(PgName, Msg) -> void()</name>
+ <fsummary>Send a message to all members of a process group</fsummary>
+ <type>
+ <v>PgName = Msg = term()</v>
+ </type>
+ <desc>
+ <p>Sends the tuple <c>{pg_message, From, PgName, Msg}</c> to
+ all members of the process group <c>PgName</c>.</p>
+ <p>Failure: <c>{badarg, {PgName, Msg}}</c> if <c>PgName</c> is
+ not a process group (a globally registered name).</p>
+ </desc>
+ </func>
+ <func>
+ <name>esend(PgName, Msg) -> void()</name>
+ <fsummary>Send a message to all members of a process group, except ourselves</fsummary>
+ <type>
+ <v>PgName = Msg = term()</v>
+ </type>
+ <desc>
+ <p>Sends the tuple <c>{pg_message, From, PgName, Msg}</c> to
+ all members of the process group <c>PgName</c>, except
+ ourselves.</p>
+ <p>Failure: <c>{badarg, {PgName, Msg}}</c> if <c>PgName</c> is
+ not a process group (a globally registered name).</p>
+ </desc>
+ </func>
+ <func>
+ <name>members(PgName) -> Members</name>
+ <fsummary>Return a list of all members of a process group</fsummary>
+ <type>
+ <v>PgName = term()</v>
+ <v>Members = [pid()]</v>
+ </type>
+ <desc>
+ <p>Returns a list of all members of the process group
+ <c>PgName</c>.</p>
+ </desc>
+ </func>
+ </funcs>
+</erlref>
+