`
langzhe
  • 浏览: 291459 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

测试 erlang:monitor

 
阅读更多

测试代码

 

  1 -module(testmonitor).

  2 -compile(export_all).

 13 hello3()->

 14     receive

 15           {Pid, T} ->

 16              io:format("receive....~p~n", [T]),

 17              S = integer_to_list(T),        

 18              io:format("receive.. Pid=~p..s=~p~n", [Pid, S]),

 19              Pid ! {integer_to_list, S},

 20              hello3()

 21     end.    

 

 

测试结果:

---------------没有使用-- erlang:monitor 当出现转换错误时收到的是timeout----------

 

39> 

39>  f(),Pid = spawn(testmonitor, hello3,[]).                        

<0.85.0>

40> f(F),F = fun() ->f(A), receive A->A after 3000-> timeout end end.

#Fun<erl_eval.20.21881191>

41>  Pid ! {self(),a2}, F().                                         

receive....a2

 

=ERROR REPORT==== 28-Nov-2012::18:55:09 ===

Error in process <0.85.0> with exit value: {badarg,[{erlang,integer_to_list,[a2]},{testmonitor,hello3,0}]}

 

timeout

42> 

42> 

42> 

-使用-- erlang:monitor 当出现转换错误时收到的是{'DOWN', MonitorRef, Type, Object, Info}----

42> 

42>  f(),Pid = spawn(testmonitor, hello3,[]).                        

<0.89.0>

43> f(F),F = fun() ->f(A), receive A->A after 3000-> timeout end end.

#Fun<erl_eval.20.21881191>

44>  R=erlang:monitor(process, Pid).                                 

#Ref<0.0.0.255>

45>  Pid ! {self(),2}, F().                                          

receive....2

receive.. Pid=<0.59.0>..s="2"

{integer_to_list,"2"}

46>  Pid ! {self(),3}, F().

receive....3

receive.. Pid=<0.59.0>..s="3"

{integer_to_list,"3"}

47>  Pid ! {self(),a2}, F().                                         

receive....a2

{'DOWN',#Ref<0.0.0.255>,process,<0.89.0>,

        {badarg,[{erlang,integer_to_list,[a2]},

                 {testmonitor,hello3,0}]}}

 

=ERROR REPORT==== 28-Nov-2012::18:55:46 ===

Error in process <0.89.0> with exit value: {badarg,[{erlang,integer_to_list,[a2]},{testmonitor,hello3,0}]}

 

48>  Pid ! {self(),3}, F(). 

timeout

49> 


 

0
1
分享到:
评论

相关推荐

    某流水过千W的erlang游戏后端

    10. **代码复用与模块化**:Erlang的模块化设计鼓励代码重用,使得游戏后端的各个组件可以独立开发和测试,提高了开发效率和代码质量。 综上所述,这个千W流水的Erlang游戏后端项目展示了如何利用Erlang的优势来...

    erlang节点连通测试

    现在我们来深入探讨如何进行Erlang节点的连通测试以及如何在需要通信时建立连接。 ### 1. Erlang节点的连接原理 在Erlang中,节点之间的连接是基于TCP/IP协议的。每个Erlang节点都有一个唯一的名称,通常格式为`...

    编写分布式的Erlang程序:陷阱和对策

    2. **链接和监视器的局限性**:Erlang中的链接(link)和监视器(monitor)机制可以用来检测进程失败并通知其他进程,这对于构建健壮的应用程序至关重要。然而,这些机制并不能确保进程语义上的正确性。例如,如果一个...

    ERLANG测试题

    从给定的Erlang测试题中,我们可以提炼出一系列重要的Erlang编程知识点,包括ETS表类型、列表操作、进程通信与监控、模块功能、模式匹配、异常处理、记录结构以及网络编程。 ### ETS表类型 在Erlang中,**ETS ...

    inside Erlang VM3

    - **商用产品的验证**:Erlang已经被众多商业产品采用,并经过了长时间的实际测试。 #### 高级网络程序要素与ERTS实现 - **CPU管理**:ERTS支持多核CPU,每个核心有一个调度器,实现负载均衡。每个调度器有自己的...

    Erlang Debugger

    **Erlang Debugger** 是一个图形化工具,用于调试和测试 Erlang 程序。它允许用户设置断点、单步执行代码以及查看和修改变量值等功能。本文将详细介绍 Debugger 的主要功能及其使用方法。 #### 二、调试器介绍 ###...

    getting_started_erlang-5.4.pdf

    - **单向链接(monitor)**:Erlang 进程间通信的一种机制,用于监视其他进程的状态。 - **二进制数据处理(binaries/bitsyntax)**:Erlang 处理二进制数据的特殊语法。 - **列表推导(List Comprehensions)**:一...

    elixir-remote-monitor:Mix一个混合任务,可帮助您从本地计算机观察远程Elixir节点

    Elixir 是一种功能强大的编程语言,它基于 Erlang VM(BEAM)运行,适用于构建分布式、容错且高效的应用程序。在 Elixir 社区中,`Mix` 是一个核心工具,它负责项目的初始化、编译、测试以及提供了一系列的任务来...

    server7:服务器编号 7

    监控方面,Erlang VM提供了如observer和vm_monitor等工具,可以帮助开发者了解系统性能、进程状态以及可能出现的问题。 总结来说,"server7"是一个基于Erlang的Web服务器实例,它的构建和运行涉及到了Erlang的基本...

Global site tag (gtag.js) - Google Analytics