目录
分布式编程:一个简单的分布式程序(客户端在一个节点,服务器在相同主机的另一个节点)
初步了解
OTP平台
OTP最初是开放电信平台(Open Telecom Platform)的缩写,更贴切的名字应该是“并发系统平台”。
OTP的优点:生产效率高、具有稳定性、易于监控、可升级、代码库可靠。
Erlang中的并发
Erlang程序能够自动适配不同的硬件,CPU越多执行越快。
在Erlang中,并发的基本单位是进程。每个进程代表一个持续的活动,它是某段程序代码的执行代理,与其他各自执行自身代码的进程一起并发执行。
进程拥有自己的工作内存和自己的信箱,进程之间互不共享内部状态,只能进行复制式通信。
Erlang Shell
部分shell函数
help() |
打印可用的shell函数 |
h() |
打印先前输入过的命令 |
v(N) |
取出第N号提示符对应的计算结果 |
pwd() |
打印当前目录 |
ls() / ls(Dir) |
打印目录内容(Dir是双引号字符串) |
cd(Dir) |
更改当前目录 |
i() |
打印当前系统的运行时信息 |
memory() |
打印内存使用信息 |
q() |
退出(会先返回ok) |
示例:
1> memory().
[{total,22824296},
{processes,6117672},
{processes_used,6116552},
{system,16706624},
{atom,278697},
{atom_used,267521},
{binary,696320},
{code,6126222},
{ets,365600}]
2> i().
Pid Initial Call Heap Reds Msgs
Registered Current Function Stack
<0.0.0> erl_init:start/2 610 2939 0
init init:loop/1 2
<0.1.0> erts_code_purger:start/0 233 23 0
erts_code_purger erts_code_purger:wait_for_request 1
<0.2.0> erts_literal_area_collector:start 233 7 0
erts_literal_area_collector:msg_l 8
<0.3.0> erts_dirty_process_signal_handler 233 7 0
erts_dirty_process_signal_handler 2
<0.4.0> erts_dirty_process_signal_handler 233 7 0
erts_dirty_process_signal_handler 2
<0.5.0> erts_dirty_process_signal_handler 233 7 0
erts_dirty_process_signal_handler 2
<0.6.0> prim_file:start/0 233 6 0
prim_file:helper_loop/0 1
<0.7.0> socket_registry:start/0 233 8 0
socket_registry socket_registry:loop/1 4
<0.10.0> erlang:apply/2 6772 50779 0
erl_prim_loader erl_prim_loader:loop/3 6
<0.42.0> logger_server:init/1 610 648 0
logger gen_server:loop/7 11
<0.44.0> erlang:apply/2 2586 837 0
application_controlle gen_server:loop/7 7
<0.46.0> application_master:init/4 376 40 0
application_master:main_loop/2 7
<0.47.0> application_master:start_it/4 610 566 0
application_master:loop_it/4 6
<0.49.0> supervisor:kernel/1 2586 3250 0
kernel_sup gen_server:loop/7 11
<0.50.0> erlang:apply/2 75113 103937 0
code_server code_server:loop/1 4
<0.51.0> supervisor_bridge:standard_error/ 233 57 0
standard_error_sup gen_server:loop/7 11
<0.52.0>