在线文档教程

pg2

pg2

模块

pg2

模块摘要

分布式命名进程组。

描述

该模块实现了进程组。每条消息都可以发送给一个、一些或所有组成员。

一组进程可以用一个通用名称来访问。例如,如果有一个名为的组foobar,则可以有一组进程(可以位于不同的节点上),它们都是该组的所有成员foobar。没有特殊的功能可以将信息发送给组。相反,客户端函数将与函数一起编写,get_members/1get_local_members/1确定哪些进程是组的成员。然后该消息可以发送给一个或多个组成员。

如果成员终止,则自动从组中删除。

警告

该模块disk_log用于管理分布式磁盘日志。磁盘日志名称用作组名称,这意味着可能需要执行某些操作以避免名称冲突。

数据类型

name() = any()

进程组的名称。

出口

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

创建一个新的空进程组。该组在全部节点上全局可见。如果组存在,则不会发生任何事情。

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

删除进程组。

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

类型

一个有用的调度功能,可以从客户端功能中使用。它在本地节点上返回一个进程,如果这样的进程存在的话。否则,它随机选择一个。

get_local_members(Name) ->

pid() | {error, {no_such_group, Name}}

类型

返回组中本地节点上运行的所有进程Name。此功能将在访问组的客户端功能中使用。因此它对速度进行了优化。

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

类型

返回组中的所有进程Name。此功能将在访问组的客户端功能中使用。因此它对速度进行了优化。

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

类型

将流程加入Pid到组中Name。一个进程可以多次加入一个组,并且必须离开该组相同的次数。

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

类型

使流程Pid离开组织Name。如果该过程不是该组的成员,则返回ok

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

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

启动pg2服务器。通常情况下,服务器不需要明确启动,因为如果需要的话它会动态启动。这在开发过程中很有用,但在目标系统中,服务器将明确启动。kernel(6)为此使用配置参数。

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

返回所有已知组的列表。

另见

kernel(6)