进程( Processes)
优质
小牛编辑
130浏览
2023-12-01
Erlang中的并发粒度是一个过程。 进程是与其他进程同时运行并独立于其他进程的活动/任务。 Erlang中的这些进程与大多数人熟悉的进程和线程不同。 Erlang进程是轻量级的,在(内存)与其他进程隔离的情况下运行,并由Erlang的虚拟机(VM)调度。 进程的创建时间非常短,刚生成的进程的内存占用非常小,并且单个Erlang VM可以运行数百万个进程。
在spawn方法的帮助下创建一个进程。 该方法的一般语法如下。
语法 (Syntax)
spawn(Module, Name, Args)
参数 (Parameters)
Module - 这是一个预定义的原子值,必须是?MODULE。
Name - 这是定义进程时要调用的函数的名称。
Args - 这些是需要发送给函数的参数。
返回值 (Return Value)
返回创建的新进程的进程ID。
例如 (For example)
以下程序中显示了spawn方法的示例。
-module(helloworld).
-export([start/0, call/2]).
call(Arg1, Arg2) ->
io:format("~p ~p~n", [Arg1, Arg2]).
start() ->
Pid = spawn(?MODULE, call, ["hello", "process"]),
io:fwrite("~p",[Pid]).
关于上述程序需要注意以下事项。
定义了一个名为call的函数,它将用于创建进程。
spawn方法使用参数hello和process调用call函数。
输出 (Output)
当我们运行上述程序时,我们将得到以下结果。
<0.29.0>"hello" "process"
现在让我们看一下流程可用的其他功能。
Sr.No. | 方法和描述 |
---|---|
1 | 此方法用于确定进程ID是否存在。 |
2 | 这称为is_process_alive(Pid)。 Pid必须引用本地节点上的进程。 |
3 | 它将进程ID转换为列表。 |
4 | 返回包含所有已注册进程名称的列表。 |
5 | 最常用的BIF之一,返回调用进程的pid。 |
6 | 这用于在系统中注册进程。 |
7 | 它被称为whereis(Name)。 返回使用名称注册的进程的pid。 |
8 | 这用于取消注册系统中的进程。 |