-module(testLinkProcess).
-export([test/1]).
-export([test1/0]).
-export([test2/0]).
-export([test3/0]).
-export([test4/0]).
-export([loopWithCounter/3]).
test(Num) ->
case Num of
1 -> spawn(testLinkProcess,test1,[]);
2 -> spawn(testLinkProcess,test2,[]);
3 -> spawn(testLinkProcess,test3,[]);
4 -> spawn(testLinkProcess,test4,[]);
_ -> void
end
.
%%2个进程都不是系统进程,相互link。
%%正常退出没有相互影响。
%%监听不到正常退出信号。
test1() ->
spawn_link(testLinkProcess,loopWithCounter,[100, 10,true]),
receive
Any -> io:format("process exit : ~p ~n",[Any])
after 3000 ->
io:format("no singal.~n",[])
end,
loopWithCounter(100,10,true)
.
%%2个进程都不是系统进程,相互link。
%%异常退出时同时退出。
%%监听不到异常退出信号。
test2() ->
spawn_link(testLinkProcess,loopWithCounter,[100, 10,false]),
receive
Any -> io:format("process exit : ~p ~n",[Any])
after 3000 ->
io:format("no singal.~n",[])
end,
loopWithCounter(100,10,true)
.
%%2个进程有1个系统进程,相互link。
%%正常进程正常退出时系统进程不会退出。
%%系统进程可以捕获到正常退出信号。
test3() ->
process_flag(trap_exit,true),
spawn_link(testLinkProcess,loopWithCounter,[100, 10,true]),
receive
Any -> io:format("process exit : ~p ~n",[Any])
after 3000 ->
io:format("no singal.~n",[])
end,
loopWithCounter(100,10,true)
.
%%2个进程有1个系统进程,相互link。
%%正常进程异常退出时系统进程不会退出。
%%系统进程可以捕获到异常退出信号。
test4() ->
process_flag(trap_exit,true),
spawn_link(testLinkProcess,loopWithCounter,[100, 10,false]),
receive
Any -> io:format("process exit : ~p ~n",[Any])
after 3000 ->
io:format("no singal.~n",[])
end,
loopWithCounter(100,10,true)
.
%%Flag为true时正常执行。
%%Flag为false时抛异常。
loopWithCounter(Time,Counter,Flag) ->
io:format("~p ~p ~n",[self(),Counter]),
receive
after Time ->
case Counter>0 of
true ->
loopWithCounter(Time,Counter-1,Flag);
false ->
case Flag of
true -> void;
false -> 1/Counter
end
end
end
.
分享到:
相关推荐
在Erlang中,进程间通信(IPC)是通过消息传递来实现的,而`link`机制是这个通信模型中非常重要的一部分。本教程将通过一个名为"bank2"的实例来探讨`link`的功能和影响。 首先,让我们理解什么是进程`link`。在...
Erlang的并发模型基于轻量级进程,这些进程之间的通信主要通过消息传递来进行。每个进程都有一个独立的消息队列,并且可以通过发送消息给其他进程来启动异步任务或请求服务。这种模型非常适合实现高度并行和容错的...
- **功能**: 监听Erlang进程之间的消息传递。 - **应用场景**: 调试复杂的分布式系统。 #### 22. Erlang网络程序调试 - **工具**: `erl_snooper`。 - **功能**: 监听网络消息,帮助调试网络程序。 - **应用场景**: ...
Erlang中的进程是并发执行的实体,进程之间的通信主要通过消息传递实现。 SW工程原则部分强调了良好的软件工程实践对于大型项目的重要性。模块化设计应尽量减少对外部模块的依赖,保持模块间调用的清晰,避免复杂的...
- Erlang进程的调度机制是如何工作的。 - 实时性是指系统能够及时响应外部事件的能力,而优先级则决定了进程执行的先后顺序。 **5.7 进程组** - 如何将进程组织成组。 - 进程组可以简化管理和监控多个进程的工作。 ...
7. 轻量级:Erlang进程的创建和销毁成本低,可以在短时间内创建成千上万个进程,使得并发处理成为可能。这种轻量级的并发模型特别适合处理大量短生命周期的任务。 8. 面向连接:Erlang的并发模型强调建立和维护稳定...
Erlang中的进程间通信模型简单而高效,通过消息传递来实现。同时,Erlang也支持客户端-服务端模型以及进程组的概念,允许开发者更灵活地组织和管理并发进程。 在分布式编程方面,Erlang提供了一套完整的分布式机制...
在Erlang的核心概念中,“进程”(process)与传统操作系统中的进程不同,Erlang进程是轻量级的,并且每个进程都是独立的执行线程,它们之间使用消息传递(message passing)进行通信。这避免了共享内存并发模型中的...
**链接管理服务器**是Erlang中实现的一种服务,它负责管理和监控Erlang进程间的链接。链接是Erlang中进程间的一种关系,当两个进程链接时,一个进程的异常退出会触发链接到它的另一个进程收到退出信号,从而可以实现...
2. 信号量与屏障:Erlang不内置信号量和屏障,但可以通过消息传递和自定义协议来模拟这些同步原语。 七、Erlang的 OTP(Open Telecom Platform) OTP是Erlang的生态系统,包含一组设计原则、库和工具,如分布式服务...
9. **并发与同步(Concurrency & Synchronization)**:Erlang进程间的并发是通过消息传递实现的,而非共享内存。同步可以通过消息传递和信号来控制,例如`receive`语句。在可视化中,这可以通过并行运行的进程和...
- **消息传递**: Erlang的核心机制之一,用于进程间的通信。 - **发送消息**: - `Pid ! Message` 向指定的进程发送消息。 - **接收消息**: - 使用 `receive` 语句等待接收消息。 - 示例:`receive {Msg, Pid} -> ...
Erlang 是一种高度并发、面向进程的编程语言,常用于构建分布式系统和实时软实时应用。Systemd 是一个在Linux系统中广泛使用的初始化系统,它管理着系统启动后的服务、定时任务等。`erlang-systemd` 库是专门为...
2. **通信(Communication)**:进程之间的通信是实现协同工作的关键。通信可以通过共享内存或消息传递的方式进行。共享内存模型允许多个进程访问同一段内存区域;而消息传递则通过发送和接收消息来交换数据。 3. *...
在E语言中,尽管它支持并发,但其轻量级进程(也称为erlang进程)的设计鼓励单个进程处理单一任务,以实现更好的并行性和容错性。 "E语言",即Erlang,是由Ericsson公司为电信系统开发的一种函数式编程语言。Erlang...
1. **进程通信**:在分布式系统中,进程通信是各个节点间交换信息和协调工作的基础。它包括多种通信机制,如消息传递(Message Passing)、共享内存、管道、套接字等。消息传递分为直接和间接通信,如RPC(Remote ...
4. **MPI(Message Passing Interface)**:用于分布式计算环境,通过消息传递进行进程间通信,广泛应用于高性能计算。 5. **OpenMP**:一种在C/C++和Fortran中实现共享内存并行化的库,通过编译器指令实现多线程...
OTP(Open Telecom Platform)是Erlang的一套开发框架,提供了许多实用的库和设计模式,如进程管理、错误处理、分布式计算等。RabbitMQ选择Erlang OTP作为基础,得益于其强大的并发处理能力、热代码升级功能以及对...