On Mon, Mar 04, 2013 at 04:32:13PM +0100, Sander Smeenk wrote:
> So, it's not a fork() from the main process (which would perhaps
> copy all threads to the fork()ed process, or maybe not, who knows).

fork() on linux creates a single thread in the child process, but copies
the memory and state of *all* threads. Which is why you can get in a right
mess. For example, if one of the other threads had something locked, that
will be still be locked in the new process, but without a corresponding
thread still running that can unlock it. So the forked process might
deadlock or otherwise behave strangely.

This is why people say not to mix threads and forks.

-- 
My Dad used to say 'always fight fire with fire', which is probably why
he got thrown out of the fire brigade.

Reply via email to