匿名`gen_server`实例?
Posted
技术标签:
【中文标题】匿名`gen_server`实例?【英文标题】:Anonymous `gen_server` instance? 【发布时间】:2020-05-18 22:45:13 【问题描述】:根据实际文档,gen_server:start_link
具有以下签名:
服务器名称 = 本地,名称 | 全球,全球名称 | via,Module,ViaName 名称 = atom()
..但是如果我不想为某些gen_server
实例分配不同的名称(既不是local
也不是global
)而是想记住它是PID
并在这样的匿名时尚?我能做到这样的行为吗?
附:为什么我需要这个?有一个参数,我们称之为N
,它定义了同一个gen_server
需要多少个实例。当前的实现类似于instance_1
..instance_N
,动态生成这些原子,但实际上PID在这里就足够了。这就是为什么我想摆脱原子并更喜欢 PID。
【问题讨论】:
【参考方案1】:ServerName参数用于注册,所以可以通过名字来引用服务器。但是这个参数是可选的,有start_link
版本没有它:
start_link(Module, Args, Options) -> Result
start_link(ServerName, Module, Args, Options) -> Result
三参数版本启动的服务器未注册。当一个人更喜欢使用其他方式而不是原子来引用服务器时,这很有用,例如当使用多个相同类型的服务器时。
【讨论】:
以上是关于匿名`gen_server`实例?的主要内容,如果未能解决你的问题,请参考以下文章