<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 27, 2015 at 9:14 PM, Loïc Hoguin <span dir="ltr"><<a href="mailto:essen@ninenines.eu" target="_blank">essen@ninenines.eu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":49" class="a3s" style="overflow:hidden">I'm not sure what you wrote there but I can give you two scenarios where it can fail off the top of my head. The first is very unlikely and can only fail if you use the 0 timeout, while the second is actually much easier to observe and can fail with both methods:<br>
<br>
P1 calls start_link<br>
P2 init (returns 0 timeout)<br>
P2 yields before calling receive<br>
P1 returns from start_link and sends P2 a message<br>
P2 receives message<br>
<br></div></blockquote><div><br></div><div>Yes, this one is an obvious linearization problem. And indeed, using concuerror for this is the right tool for the job. But if you send yourself a message, concuerror reports, as expected that this is safe behaviour:<br><br>Done! (Exit status: completed)<br>  Summary: 0 errors, 3/3 interleavings explored<br><br></div><div>and if that was not the case, there is something about the semantics of Erlang I need to learn :)<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":49" class="a3s" style="overflow:hidden">
And:<br>
<br>
P1 calls start_link<br>
P2 in init subscribes to some kind of pubsub PS<br>
PS sends P2 message(s)<br>
P2 returns from init and receive those messages<br></div></blockquote><div><br></div><div>The fact that you give other processes access to the Pid the guarantee is lost. In that case, you can capture messages arriving before initialization and do something sensible with them, or you can do the enter_loop dance you suggested. I don't think it is a bad solution, but I would prefer to be able to do something simpler in common cases, and indeed, sending yourself a message is one of those, if we are to believe concuerror.<br> <br></div></div><br clear="all"><br>-- <br><div class="gmail_signature">J.</div>
</div></div>