`
yjl49
  • 浏览: 113761 次
社区版块
存档分类
最新评论

Erlang gen_server:start_link/3 和gen_server:start_link/4

阅读更多

两个方法都可以用来启动一个gen_server服务器进程,具体的参数如下:

gen_server:start_link(Module,Args,Option);

gen_server:start_link(ServerName,Module,Args,Option);

 

第二个方法只比第一个多了个ServerName,在gen_server的源码中区别如下:


再具体看gen的源码:

可以看出如果有ServerName参数就会先查找一遍是否有同名的进程存在,有就会产生{error,{already_started,Pid}} 的提示。

所在在开发并发的gen_server程序的时候要注意调用哪个方法。

 

分享到:
评论

相关推荐

    RabbitMQ系统客户端连接到RabbitMQ服务端消息通信过程1

    - `gen_tcp`模块在Erlang中用于TCP套接字操作,如连接、发送和接收数据。在RabbitMQ客户端中,`gen_tcp:connect`用于建立到服务器的TCP连接。 总的来说,RabbitMQ客户端和服务端之间的通信涉及到复杂的协议交互、...

    Erlang实战

    - 使用 `gen_server:start/3` 或 `gen_server:start_link/3` 启动服务器。后者通常用于创建一个进程,使其成为监督树的一部分,以方便故障恢复。 - 在处理复杂逻辑时需要注意避免死锁。例如,在 `handle_call/3` 中...

    自己写一个tcp 通用服务器

    2. `start_link/1`函数:这是启动服务器进程的常见方法,通常会调用`gen_server:start_link/3`或`gen_server:start_link/4`来启动服务器并与之关联。 3. 连接管理:服务器需要管理多个客户端连接,因此可能会有一个...

    OTP Design Principles

    - **启动GenServer**:通常通过`gen_server:start_link/4`函数启动一个GenServer进程。 - **同步请求-Call**:客户端可以通过调用`gen_server:call/2`来发送同步请求。 - **异步请求-Cast**:如果不需要等待服务器的...

    erlang OTP Design Principles之Gen中文

    在示例中,`gen_fsm:start_link/4`被调用,创建了一个新的Erlang进程,它是一个Gen_Fsm。第一个参数`{local, code_lock}`指定了本地注册的名字,使得Gen_Fsm可以通过`code_lock`这个名字访问。如果省略名字,进程将...

    Erlang的OOP功能

    gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). init([]) -> {ok, State}. handle_call(Request, From, State) -> %% 处理请求的逻辑 {reply, Response, State}. ``` **3. 封装和消息传递** ...

    erlwitness:按语义组跟踪过程(Erlang)

    证人 版权所有(c)2015 Guilherme Andrade 版本: 1.0.0 作者: Guilherme Andrade( )。 erlwitness :语义过程组守望台。 erlwitness允许将gen_... 调整现有实体的gen_server:start / gen_server:start_link

    Erlang入门:构建application练习5(监督树)

    2. **模块(`.erl`)**:实际实现功能的代码,可以是普通的函数模块,也可以是行为模块(如gen_server,gen_event等)。 3. **启动脚本(`.boot`)**:指定启动应用时的初始状态,包括启动哪些进程及其顺序。 4. *...

    vscode:用于Erlang语言服务器的Visual Studio代码扩展

    悬停了gen_server:start_link调用? 只需一次击键即可跳转到相应的init函数。 签名建议 永远不记得lists:keytake/3函数的顺序? 你不是一个人。 我们得到了你的覆盖。 编译器诊断 从编译器内联显示警告和错误。 透析...

    使用OTP原理构建一个非阻塞的TCP服务器

    在gen_server和gen_fsm中,我们需要定义各种回调函数,如`init/1`、`handle_call/3`、`handle_cast/2`、`handle_info/2`和`terminate/2`等。这些回调允许我们处理不同类型的事件和消息,如系统消息、用户自定义消息...

    rebar生成erlang release 并进行热代码升级

    {myapp_server, start_link, []}, permanent, 5000, worker, [myapp_server]}, {ok, {{one_for_one, 5, 10}, [Server1]}}. ``` 同时还需要修改`myapp.app.src`文件,确保`myapp_server`被正确地包含在内: ```...

    Erlang中文手册

    - **函数**: `gen_fsm:start/3`。 - **参数**: 模块名、初始状态、初始参数。 - **2.3.4 事情通知** - **定义**: 发送给状态机的消息,用于触发状态转换。 - **处理**: 在状态函数中处理这些消息。 - **2.3.5 ...

    erlang高性能网络库esockd的编译和使用(三)

    gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). init([]) -> % 开始监听8080端口 {ok, ListenSocket} = esockd:listen(8080, [{socket, gen_tcp}, {active, once}]), % 接受客户端连接 accept...

    Webserver:Erlang 中的一个简单的网络服务器

    `gen_server` 提供了一个标准的接口,包括 `start_link/3`(启动服务器并建立链接)、`handle_call/3`(处理同步调用)、`handle_cast/2`(处理异步消息)和 `handle_info/2`(处理其他信息)等回调函数。...

    erlang-kafka:Erlang 的 Kafka 消费者协议

    Kafka 协议客户端作为 OTP gen_server运行。 范围 描述 默认 笔记 主持人 要连接的 Kafka 代理的主机名 本地主机 主机名或 IP 地址作为元组 港口 Kafka 代理使用的端口号 9092 客户编号 发送给 Kafka 代理的客户端...

    erprice:实验性的Erlang交易监控器

    { ok , GenServer } = gen_server : start_link ( erprice_quote ,[],[]), erprice_quote : dropPercentScan ( GenServer , 0.001 , [ { " ORCL " , " NY " }, { " SGR " , " MI " }, { " TRN " , " MI

    echo-server-ex:使用Elixir lang的简单exho服务器

    我们需要定义`start_link/0`,`init/1`,`handle_call/3`和`handle_cast/2`等回调函数。在这个例子中,我们将只用到`handle_info/2`,因为它适合处理接收到的TCP数据。 4. **监听端口** - 在`init/1`函数中,我们...

    Elixir编程入门

    - **GenEvent使用**:通过`GenEvent.start_link/1`启动事件处理器,使用`GenEvent.notify/2`发送事件。 ##### 3.5 监督者和应用程序 - **监督者概念**:负责监控一组进程,并在进程失败时重启它们。 - **应用程序*...

Global site tag (gtag.js) - Google Analytics