<p>Yes, if you register a property key, you can retrieve all the procs that have that property set.  For instance a fanout pub/sub can be accomplished doing:</p>
<p>subscribe(Channel) -><br>
    gproc:reg({p, l, {subscribers,<br>
                               Channel}}).</p>
<p>publish(Channel, Msg) -><br>
    gproc:send({p, l, {subscribers,<br>
                                  Channel}},<br>
                         Msg).</p>
<p>If a process calls publish/2, the message will be sent to every process that called subscribe/1.</p>
<p>I'm on my phone so it's a bit hard to look up the details, if you want to get a list of pids that called subscribe, look at the code of gproc:send/2.  I think the function is called lookup_pids/1 but I may be wrong.</p>

<p>The etorrent project uses gproc.  That's a good read if you want to see how to use gproc.  He uses property keys for each torrent file process as well as using await to delay initialization of gen_servers that depend on other gen_servers.<br>
</p>
<p>Eric Moritz.<br>
</p>
<div class="gmail_quote">On Jun 6, 2012 8:27 AM, "Loïc Hoguin" <<a href="mailto:essen@ninenines.eu">essen@ninenines.eu</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 05/26/2012 10:38 PM, Motiejus Jakštys wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
</blockquote>
<br>
Hello,<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
For term() to pid() mapping I've always used gproc. For the same thing<br>
my coworker always used pg2.<br>
<br>
I am making a comparison now. There are some features in gproc which are<br>
not in pg2:<br>
<br>
* Await for registration<br>
* Per-process properties<br>
* Aggregate counters<br>
* QLC<br>
<br>
Whereas pg2 "natively" supports mapping one key to several processes<br>
(which can be easily achieved with QLC in gproc).<br>
</blockquote>
<br>
Unless I misunderstand, gproc's properties are exactly this, mapping one key to several processes.<br>
<br>
-- <br>
Loïc Hoguin<br>
Erlang Cowboy<br>
Nine Nines<br>
______________________________<u></u>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-questions</a><br>
</blockquote></div>