On 25/04/14 11:00, Antti Kantee wrote:
> So if you don't do anything, all local threads will run in the context
> of process 1.  Now, unless you copy the fd by "forking", and assuming
> the nginx event loop is something like the following, you'd have a race
> condition for the socket:

Actually, let's expand on that a bit more.  If you use a separate rump 
kernel process context, all resources managed by the rump kernel will 
automatically get freed when you release that context, including other 
file descriptors etc. opened by the rump kernel while handling the 
request.  So for those resources you get the true semantics of a 
fork-based worker model.

However, what will _not_ get released is any resource you allocated from 
the host instead of from the rump kernel.  This includes e.g. malloc()'d 
memory.  Unless you can successfully patch the code to free those 
resources (and perhaps convince nginx upstream to take your patches), 
you still have the option of using the inherently slower remote clients, 
where a host process fork is possible.

------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
rumpkernel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rumpkernel-users

Reply via email to