• erlang 程序设计 习题:环形基准测试


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

    不知道我对这个题目的理解是否是正确的,创建一个进程,然后再这个进程中再创建一个,总共创建N个,形成一个环,只需要向Head进程发送一条消息,消息就可以沿着进程环传递直到最后一个进程。

    下面是代码:

    -module(circle_process).
    -import(lib_misc,[for/3]).
    -compile(export_all).
    
    start(Num) ->
        register(circle_head, spawn(fun() -> create(Num)end)).
    
    
    send_message(M, N) ->
        lib_misc:for(0, N, fun(I) -> circle_head ! M end).
    
    create(0) ->
        self();
    create(Num) ->
        Pid = spawn(fun() -> create(Num - 1) end),
        io:format("self Pid:~p create process:~p~n", [self(), Pid]),
        loop(Pid).
    
    loop(Pid) ->
        receive
            cancel ->
                Pid ! cancel,
                cancel;
            Any ->
                Pid ! Any,
                io:format("Pid:~p receive:~p~n", [self(), Any]),
                loop(Pid)
        end.

    lib_misc中for循环的代码:

    for(Max, Max, F) -> [F(Max)];
    for(I, Max, F) -> [F(I)|for(I+1, Max, F)].

    仅供参考,希望能看到更好的答案。

  • 相关阅读:
    Flutter页面-基础Widget
    Data 方法、异常与类
    kafka手动设置offset
    centos 安装ftp服务BUG
    定时任务
    Java垃圾收集算法
    ByteBuffer数据结构
    HelloWorldDynamic
    HelloWorld
    sql技巧(增册改查)
  • 原文地址:https://www.cnblogs.com/DreamCreator/p/3670451.html
Copyright © 2020-2023  润新知