查看源代码 pool (stdlib v6.2)
负载分配工具。
此模块可用于将一组 Erlang 节点作为计算处理器的池运行。它被组织为一个主节点和一组从节点,并包括以下功能:
- 从节点定期向主节点发送关于其当前负载的报告。
- 可以向主节点发送查询,以确定哪个节点的负载最低。
BIF statistics(run_queue)
用于估计未来的负载。它返回 Erlang 运行时系统中准备运行的进程队列的长度。
从节点使用 slave
模块启动。这会影响终端 I/O、文件 I/O 和代码加载。
如果主节点失败,则整个池退出。
文件
.hosts.erlang
用于选择可以启动节点的宿主机。有关此文件的格式和位置的信息,请参阅 net_adm:host_file/0
。
$HOME/.erlang.slave.out.HOST
用于可能来自标准 I/O 上从节点的所有额外 I/O。如果启动过程不起作用,此文件可以指示原因。
摘要
函数
确保池主节点正在运行,并将 Node
包含在池主节点的节点池中。
返回预期未来负载最低的节点。
返回池的当前成员节点列表。
在预期具有最低未来负载的池节点上生成一个进程。
在预期具有最低未来负载的池节点上生成一个进程并将其链接。
启动一个新池。
停止池并杀死所有从节点。
函数
-spec attach(Node) -> already_attached | attached when Node :: node().
确保池主节点正在运行,并将 Node
包含在池主节点的节点池中。
-spec get_node() -> node().
返回预期未来负载最低的节点。
-spec get_nodes() -> [node()].
返回池的当前成员节点列表。
在预期具有最低未来负载的池节点上生成一个进程。
在预期具有最低未来负载的池节点上生成一个进程并将其链接。
等效于 start(Name, [])
。
启动一个新池。
读取文件 .hosts.erlang
以查找可以启动池节点的宿主机名;请参阅 文件 部分。如果找不到该文件,则启动过程将失败。
从节点使用 slave:start/2,3
启动,同时传递 Name
,如果提供,则传递 Args
。Name
用作节点名称的第一部分,Args
用于指定命令行参数。
必须设置访问权限,以便池中的所有节点都有权相互访问。
该函数是同步的,并且当它返回值时,所有节点和所有系统服务器都在运行。
-spec stop() -> stopped.
停止池并杀死所有从节点。