Erlang并发

1.认识并发与并行

并行是指两个或者多个事件在同一时刻发生。

并发是指两个或多个事件在同一时间间隔交替发生。

2.认识Erlang程序的并发

Erlang程序会包含几十、几千、甚至几十万个小进程,每个进程都拥有一块私有内存区域。Erlang进程不共享内存,所以不用像java那样上锁。

3.基本并发函数

PID=spawn(Fun):Pid是用来给进 程发送消息,创建一个新的并发进程来执行Fun()。

Pid !Message:向标识符为Pid的进程发送消息Message。消息发送是异步的。

receive

        模式1->

                做什么事        ;

        模式2->

                做什么事

end.

接收信息,做出反应

4.客户端-服务器介绍

传统的客户端与服务器是多对一的形式,而Erlang只是两个进程,客户端总是通过向服务器发送一个 请求来发起计算。服务器计算后生成回复,然后发送一个响应给客户端。

rac(Pid, Requst)->

PID ! {self(), requst} %%发送消息,并将自己的pid发送

receive

{pid, response}->

response

end.

loop()->

receive

{From, {r,w,h}}->

From! {self(), w*h}, %%返回消息给客户端

loop();

{From, other}->

From! {self(), other},

response

end.

5.进程是很小的

分裂20 000个进程平均消耗了3.0微秒/进程的CPU时间和3.4微秒/进程的实际运行时间。我们也需要考虑到内存,随着进程数量的增加,进程分裂 时间也在增加。如果继续增加进程的数量,最终会耗尽物理内存,导致系统开始把物理内存交换 到硬盘上,运行速度明显变慢。

6.超时的接收

receive

        模式1->

                做什么事        ;

        模式2->

                做什么事;

 after time->

        A

end.

如果在进入接收表达式的Time毫秒后还没有收到匹配的消息,进程就会停止等待消息,执行A。

只带超时

receive

 after time->

        A

end.

超时值为 0 的接收

receive

        模式1->

                做什么事        ;

        模式2->

                做什么事;

 after 0->

        A

end.

7.注册进程

register(原子,pid):注册进程,用AnAtom(一个原子)作为名称来注册进程Pid。如果AnAtom已被用于注册某个进程, 这次注册就会失败

unregister(原子,pid):移除与AnAtom关联的所有注册信息

whereis(原子)->pid| :判断是否注册

8尾递归

含义:先执行,后调用

好处:无需消耗栈空间也能一 直循环下去。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值