博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Erlang程序设计》第8章习题解
阅读量:4206 次
发布时间:2019-05-26

本文共 1396 字,大约阅读时间需要 4 分钟。

(1)编写一个函数start(AnAtom,Fun)来把spawn(Fun)的结果注册为AnAtom。当两个并行的进行同时执行到start/2函数时,要确保代码能够正常工作。也就是说,这两个进程其中一个成功执行,而另一个必须执行失败。

-module(ex1).-compile(export_all). main(_) ->    start(abc, fun() -> io:format("Bing~n") end),    start(abc, fun() -> io:format("Bang~n") end). start(AnAtom, Fun) ->    R = self(),    spawn(        fun() ->            try register(AnAtom, self()) of                true->                    R ! true,                    Fun()            catch                error:_ ->                    R ! false            end        end    ),     receive        true -> true;        false -> io:format("false ~n")    end.

(2)编写一个环形基准测试。在一个环形创建N个进程。然后沿着环发送一条消息M次,最后总共发送N*M条消息。在N和M的不同取值下测试整个过程会消耗多长时间。

-module(ex2).-compile(export_all). main() ->    start(1000, 10),    start(1000, 20),    start(2000, 10). start(N, M) ->    statistics(runtime),    statistics(wall_clock),    L = create(N, []),    post(haha, L, M),    {_, Time1} = statistics(runtime),    {_, Time2} = statistics(wall_clock),    io:format("Total time : ~p(~p) ~n", [Time1*1000, Time2*1000]). create(0, L) ->    L; create(N, L) ->    Pid = spawn(fun loop/0),    create(N-1, [Pid|L]). loop() ->    receive        Any ->            io:format("Msg arrived: ~p~n", [Any]),            loop()    end. post(_ , _, 0) ->    void; post(Msg, L, M) ->    %io:format("M = ~p~n", [M]),    [ H ! Msg || H <-L],    post(Msg, L, M-1).

参考资料:

转载地址:http://jpqli.baihongyu.com/

你可能感兴趣的文章
为LoadRunner写一个lr_save_float函数
查看>>
PrefTest工作室全新力作-《性能测试与调优实战》课程视频即将上线
查看>>
质量度量分析与测试技术 培训大纲
查看>>
欢迎加入【亿能测试快讯】邮件列表!
查看>>
为什么我们的自动化测试“要”这么难
查看>>
LoadRunner性能脚本开发实战训练
查看>>
测试之途,前途?钱途?图何?
查看>>
测试设计与测试项目实战训练
查看>>
HP Sprinter:敏捷加速器
查看>>
单元测试培训PPT
查看>>
adb常用命令
查看>>
通过LR监控Linux服务器性能
查看>>
通过FTP服务的winsockes录制脚本
查看>>
LRwinsocket协议测试AAA服务器
查看>>
Net远程管理实验
查看>>
反病毒专家谈虚拟机技术 面临两大技术难题
查看>>
几种典型的反病毒技术:特征码技术、覆盖法技术等
查看>>
性能测试一般过程与LR性能测试过程
查看>>
Software Security Testing软件安全测试
查看>>
SQL注入漏洞全接触--进阶篇
查看>>