<br><br><div class="gmail_quote">On Thu, May 1, 2008 at 6:04 AM, Richard Carlsson <<a href="mailto:richardc@it.uu.se">richardc@it.uu.se</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">Darren New wrote:<br>
> I know very little about Erlang overall, but isn't the point of<br>
> exporting this to make it available for code upgrades? I.e., without<br>
> exporting the entry, it would be very difficult to have spawn(M,F,A)<br>
> spawn code that had changed recently, yes?<br>
<br>
</div>No, because if you are using spawn(fun loop/0), or if you want to pass<br>
some arguments, use spawn (fun () -> loop(X, Y, Z) end), then obviously<br>
both the spawning code and the code for the fun is in the _same module_,<br>
so if the spawner is running the new code, the new process will also<br>
be running the new code. Code upgrade is only done per whole module.<br>
<br>
Also note that since the body of the fun is a tail call to the loop<br>
function, the fun-object is just a temporary object which is discarded<br>
once the new process starts executing in loop(). So, spawning from<br>
funs in this way is totally safe with respect to code upgrade. </blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
The warning about funs and code upgrade only has to do with stuff like<br>
storing a fun in a data structure somewhere, and then later digging it<br>
out and running it. It is by that time possible that the module where<br>
the fun was defined has been reloaded, but you'll still be running the<br>
old code that the fun belongs to. (You might often actually want this.)<br>
When you do a spawn from a literal fun for code in the same module, this<br>
cannot happen.<font color="#888888"><br>
</font><div><div></div><div class="Wj3C7c"><a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank"></a></div></div></blockquote><div><br>so are you saying you can do hot code reloading _without_ using the MFA version of spawn?<br>
</div></div><br>