- Erlang 教程
- Erlang - 首页
- Erlang - 概述
- Erlang - 环境
- Erlang - 基本语法
- Erlang - Shell
- Erlang - 数据类型
- Erlang - 变量
- Erlang - 运算符
- Erlang - 循环
- Erlang - 决策
- Erlang - 函数
- Erlang - 模块
- Erlang - 递归
- Erlang - 数字
- Erlang - 字符串
- Erlang - 列表
- Erlang - 文件I/O
- Erlang - 原子
- Erlang - 映射
- Erlang - 元组
- Erlang - 记录
- Erlang - 异常
- Erlang - 宏
- Erlang - 头文件
- Erlang - 预处理器
- Erlang - 模式匹配
- Erlang - 保护条件
- Erlang - BIFs
- Erlang - 二进制
- Erlang - 函数 (Funs)
- Erlang - 进程
- Erlang - 邮件
- Erlang - 数据库
- Erlang - 端口
- Erlang - 分布式编程
- Erlang - OTP
- Erlang - 并发
- Erlang - 性能
- Erlang - 驱动程序
- Erlang - Web编程
- Erlang 有用资源
- Erlang - 快速指南
- Erlang - 有用资源
- Erlang - 讨论
Erlang - 进程
Erlang 中并发的粒度是一个进程。进程是一个活动/任务,它与其他进程并发运行并且相互独立。Erlang 中的进程与大多数人熟悉的进程和线程不同。Erlang 进程是轻量级的,在(内存)中与其他进程隔离运行,并由 Erlang 的虚拟机 (VM) 调度。进程的创建时间非常短,刚刚生成的进程的内存占用非常小,单个 Erlang VM 可以运行数百万个进程。
进程是借助 `spawn` 方法创建的。该方法的通用语法如下所示。
语法
spawn(Module, Name, Args)
参数
模块 − 这是一个预定义的原子值,必须为 `?MODULE`。
名称 − 这是在定义进程时要调用的函数的名称。
参数 − 这些是要发送到函数的参数。
返回值
返回新创建进程的进程 ID。
例如
以下是 `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` 函数。
输出
运行上述程序后,我们将得到以下结果。
<0.29.0>"hello" "process"
现在让我们来看看进程的其他可用函数。
序号 | 方法和描述 |
---|---|
1 |
此方法用于确定进程 ID 是否存在。 |
2 |
这称为 `is_process_alive(Pid)`。Pid 必须引用本地节点上的进程。 |
3 |
它将进程 ID 转换为列表。 |
4 |
返回所有已注册进程名称的列表。 |
5 |
最常用的 BIF 之一,返回调用进程的 pid。 |
6 |
这用于在系统中注册进程。 |
7 |
这称为 `whereis(Name)`。返回使用该名称注册的进程的 pid。 |
8 |
这用于在系统中注销进程。 |
广告