• erlang中pg2模块使用


    pg2这个模块实现了进程组的功能。这个模块之前有个模块为pg,pg模块的进行组中消息将被发送到组内的每个进程,但是pg2却不同,它可以选择性地将 消息发送给单个、某些或全部组内成员。通过进程组的名称可以访问组内的进程,例如进程组的名称为foobar,而且有一系列进程位于组内,可能这些进程位 于不同的节点上,都可以成为foobar的成员。不能够直接向foobar发送消息,但是通过方法get_members/1 和 get_local_members/1获取的组内的进程,然后可以与查出的进程通信。


    下面是一些示例:

    %%通常pg2服务器不需要明确显示的启动的,而是在需要的时候动态的启动,
    %%例如你调用pg2:create是pg2服务已经启动,如果要显示的启动,调用
    1> pg2:start().
    {ok,<0.34.0>}

    2> pg2:start_link().
    {error,{already_started,<0.34.0>}}


    %%创建名字为group1的进程组
    3> pg2:create(group1).
    ok


    %%查看所有可见的组
    pg2:which_groups().
    4> pg2:which_groups().
    [group1,group2]


    %%同一个进程可以多次加入到组中,如果需要将一个进程加入到一个组中,如下
    15> pg2:join(group1,self()).
    ok
    16> pg2:join(group1,self()).
    ok
    17> self().
    <0.48.0>
    18> pg2:get_members(group1).
    [<0.48.0>,<0.48.0>]
    19> pg2:leave(group1,self()).
    ok
    20> pg2:get_members(group1). 
    [<0.48.0>]




    %%获取本节点内位于组内的进程
    21> pg2:get_local_members(group1).
    [<0.48.0>]


    %%从进程组中,随机获取一个进程
    22> pg2:get_closest_pid(group1).
    <0.48.0>


    %%删除进程组
    23> pg2:delete(g1).         
    ok

    本文转自:http://blog.csdn.net/southflow/article/details/6868731

  • 相关阅读:
    博客园如何运行代码
    视觉差
    h5 播放器 -3
    播放器 视频 音频 -1
    游戏 保卫萝卜
    跟踪算法
    走口字

    联动日历
    jq 抽奖
  • 原文地址:https://www.cnblogs.com/labi/p/3574741.html
Copyright © 2020-2023  润新知