联系erlang中未注册进程的智能方式?

联系erlang中未注册进程的智能方式?,erlang,Erlang,假设您想用100个表示狗的未注册gen_fsm填充erlang节点。每只狗都可以四处走动,并且必须能够向前移动到某个中心进程的当前位置。其他进程(例如捕狗器)应询问中央进程是否有狗在其附近 现在的问题是:在中央进程的状态中以{Pid,{X,Y}}的形式存储元组列表是一个好的解决方案?如果是这样的话,唯一的中心流程会成为瓶颈吗 在自动调度大量客户端和服务器方面,我也遇到了类似的问题。 1.1. 也许proecess group pg2模块可以提供一些帮助,它包含以下功能: get_closest_

假设您想用100个表示狗的未注册gen_fsm填充erlang节点。每只狗都可以四处走动,并且必须能够向前移动到某个中心进程的当前位置。其他进程(例如捕狗器)应询问中央进程是否有狗在其附近


现在的问题是:在中央进程的状态中以
{Pid,{X,Y}}
的形式存储元组列表是一个好的解决方案?如果是这样的话,唯一的中心流程会成为瓶颈吗

在自动调度大量客户端和服务器方面,我也遇到了类似的问题。 1.1. 也许proecess group pg2模块可以提供一些帮助,它包含以下功能:

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

1.2。也许你可以把整个空间划分成更小的区域,每个区域都有可接受的大小,只有区域的前导包含信息

在应用程序中充当
中心人的任何进程都会出现瓶颈。每当遇到这种情况时,我都会使用
ETS表
。首先要考虑这一点。通常,这种存储将允许对Erlang应用程序中的数据结构进行适当而健壮的访问。如果没有
ETS表格
,您的应用程序可能无法超出存储PID的列表、数组或集合e.t.c.的特定长度

此外,中心进程可能死亡,整个状态丢失。ETS表格提供了一种处理表格所有者崩溃情况的方法,表格实际上可以移交给范围内的另一个进程。应用程序进程中的列表或数组可能会在长度或大小上增长,在该长度或大小上搜索、查找和/或从中删除可能是非常消耗内存的过程。从压力中解脱出来,看看
ETS表格
,以及与之相关的所有内容,几分钟(或几小时,取决于任务的复杂程度)后,你就能赶上进度.

对于灵活进程注册表的现成健壮解决方案,请看一看

其中的一个问题是ETS表也可能成为瓶颈,特别是在具有多个内核的系统上,在这些系统中,进程将相互竞争以访问该表。是的,但在许多应用程序中通常不会发生这种情况。这是因为没有太多的应用程序严重并发到导致
ETS
表崩溃的程度。如果它不能处理并发性,
mnesia_tm
,我的意思是,
mnesia RAM tables
设置在