欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Erlang进程的创建

程序员文章站 2022-07-15 22:54:32
...

个人理解:

1、start1/0 创建的进程 创建结束后立即消失

2、start2/0 创建的进程 创建结束后再收到一次消息后立即消失

3、start2/0 创建的进程 创建结束后可以多次接受消息

造成这三者的区别关键是与receive的写法。

是否可以理解为一个进程的生命周期是receive--end?

测试代码:

 

 1 -module(testspawn).
  2 -compile(export_all).
  3 start1()->
  4     spawn(?MODULE,hello1,[]).
  5    
  6 start2()->
  7     spawn(?MODULE,hello2,[]).
  8    
  9 start3()->
 10     spawn(?MODULE,hello3,[]).
 11    
 12 hello1()->
 13     ok.
 14 
 15 hello2()->
 16     receive
 17         T ->
 18               T
 19     end.
 20 
 21 hello3()->
 22      receive                                                                                                                                             
 23           T ->
 24              T,
 25              hello3()
 26     end.

测试结果:4> Pid1 = testspawn:start1().

<0.48.0>
5> erlang:is_process_alive(Pid1).
false
6> Pid2 = testspawn:start2().     
<0.51.0>
7> erlang:is_process_alive(Pid2).
true
8> Pid2 ! pid2.
pid2
9> erlang:is_process_alive(Pid2).
false
10> Pid3 = testspawn:start3().    
<0.56.0>
11> erlang:is_process_alive(Pid3).
true
12> Pid3 ! test.
test
13> erlang:is_process_alive(Pid3).
true
14> Pid3 ! test1.                 
test1
15> erlang:is_process_alive(Pid3).
true
16>  

 

 

相关标签: Erlang