OTP文档指出gen_server:start/4
的签名如下:
start_link(ServerName, Module, Args, Options) -> Result
ServerName = {local,Name} | {global,GlobalName}
| {via,Module,ViaName}
Name = atom()
GlobalName = ViaName = term()
Module = atom()
Args = term()
Options = [Option]
Option = {debug,Dbgs} | {timeout,Time} | {hibernate_after,HibernateAfterTimeout} | {spawn_opt,SOpts}
Dbgs = [Dbg]
Dbg = trace | log | statistics | {log_to_file,FileName} | {install,{Func,FuncState}}
SOpts = [term()]
Result = {ok,Pid} | ignore | {error,Error}
Pid = pid()
Error = {already_started,Pid} | term()
https://erlang.org/doc/man/gen_server.html#start_link-4
什么是Func
?文件只是说:
当需要比gen_server进程行为提供得初始化过程更复杂得初始化过程时,此函数非常有用.
所以现在我知道它是有用的。但是它需要多少个参数?什么类型的?
谢谢你的帮助。
2条答案
按热度按时间sqyvllje1#
该规范中的
Func
是debug
的一个选项,因此它与该文档没有什么关系。您引用的文档引用的是
gen_server:enter_loop
函数,而不是Func
。关于您的问题,
Func
是用sys
模块处理的,就像在sys:install/2中一样,并且具有以下规范:cgh8pdjw2#
如果我在最新的主服务器上跟踪源代码,gen_server的文件没有提到
install
作为任何debug
选项。所以我猜
1.代码已更改,文档不是最新的
1.代码和文档已更改,但未部署最新的文档
从历史上看,这可能是“@何塞M”所指的。