匿名 `gen_server` 实例?

Anonymous `gen_server` instance?

根据实际文档,gen_server:start_link具有以下签名:

ServerName = {local,Name} | {global,GlobalName} | {via,Module,ViaName}
Name = atom()

..但是如果我不想为某些 gen_server 实例分配不同的名称(既不是 local 也不是 global),而是想记住它是 PID 并以这种 匿名 方式引用它?我能实现这样的行为吗?

P.S。为什么我需要这个?有一个参数,我们称它为N,它定义了需要多少个相同的gen_server实例。当前的实现执行类似 instance_1..instance_N 的操作,动态生成这些原子,但实际上 PID 在这里就足够了。这就是为什么我想摆脱原子并更喜欢 PID。

ServerName参数用于注册,所以可以通过名称来引用服务器。但是这个参数是可选的,存在 start_link 没有它的版本:

start_link(Module, Args, Options) -> Result
start_link(ServerName, Module, Args, Options) -> Result

三参数版本启动的服务器未注册。当人们更喜欢使用其他方式而不是原子来引用服务器时,这很有用,例如,当使用多个相同类型的服务器时。