Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
pg2(3)			   Erlang Module Definition			pg2(3)

NAME
       pg2 - Distributed Named Process Groups

DESCRIPTION
       This module implements process groups. The groups in this module	differ
       from the	groups in the module pg	in several ways. In pg,	 each  message
       is  sent	 to all	members	in the group. In this module, each message may
       be sent to one, some, or	all members.

       A group of processes can	be accessed by a common	name. For example,  if
       there  is  a group named	foobar,	there can be a set of processes	(which
       can be located on different nodes) which	are all	members	of  the	 group
       foobar.	There  are  no	special	functions for sending a	message	to the
       group. Instead, client functions	should be written with	the  functions
       get_members/1  and  get_local_members/1 to find out which processes are
       members of the group. Then the message can be sent to one or more  mem-
       bers of the group.

       If a member terminates, it is automatically removed from	the group.

   Warning:
       This  module  is	 used  by the disk_log module for managing distributed
       disk logs. The disk log names are used as group names, which means that
       some action may need to be taken	to avoid name clashes.

DATA TYPES
       name() =	any()

	      The name of a process group.

EXPORTS
       create(Name :: name()) -> ok

	      Creates  a new, empty process group. The group is	globally visi-
	      ble on all nodes.	If the group exists, nothing happens.

       delete(Name :: name()) -> ok

	      Deletes a	process	group.

       get_closest_pid(Name) ->	pid() |	{error,	Reason}

	      Types:

		 Name =	name()
		 Reason	= {no_process, Name} | {no_such_group, Name}

	      This is a	useful dispatch	function which can be used from	client
	      functions.  It  returns  a  process on the local node, if	such a
	      process exist. Otherwise,	it chooses one randomly.

       get_members(Name) -> [pid()] | {error, {no_such_group, Name}}

	      Types:

		 Name =	name()

	      Returns all processes in the group Name. This function should be
	      used  from  within a client function that	accesses the group. It
	      is therefore optimized for speed.

       get_local_members(Name) ->
			    [pid()] | {error, {no_such_group, Name}}

	      Types:

		 Name =	name()

	      Returns all processes running on the local  node	in  the	 group
	      Name. This function should to be used from within	a client func-
	      tion that	accesses the group.  It	 is  therefore	optimized  for
	      speed.

       join(Name, Pid :: pid())	-> ok |	{error,	{no_such_group,	Name}}

	      Types:

		 Name =	name()

	      Joins  the  process  Pid to the group Name. A process can	join a
	      group several times; it must then	leave the group	the same  num-
	      ber of times.

       leave(Name, Pid :: pid()) -> ok | {error, {no_such_group, Name}}

	      Types:

		 Name =	name()

	      Makes  the  process  Pid leave the group Name. If	the process is
	      not a member of the group, ok is returned.

       which_groups() -> [Name :: name()]

	      Returns a	list of	all known groups.

       start() -> {ok, pid()} |	{error,	any()}

       start_link() -> {ok, pid()} | {error, any()}

	      Starts the pg2 server. Normally, the server does not need	to  be
	      started  explicitly,  as	it  is	started	 dynamically  if it is
	      needed. This is useful during development, but in	a target  sys-
	      tem  the	server should be started explicitly. Use configuration
	      parameters for kernel for	this.

SEE ALSO
       kernel(6), pg(3)

Ericsson AB			  kernel 3.2				pg2(3)

NAME | DESCRIPTION | DATA TYPES | EXPORTS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=pg2&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help