Subject: Re: fork(2) vs. pthread_create() (fwd)
To: Emmanuel Dreyfus <manu@netbsd.org>
From: Giles Lean <giles@nemeton.com.au>
List: tech-userlevel
Date: 06/09/2004 18:57:52
Emmanuel Dreyfus <manu@netbsd.org> wrote:

> Before forking, I joined the exisiting thread, thus reverting to a single
> threaded process. The problem is that the process remebers it has been 
> threaded when I hit the fork, whereas it is not threaded anymore.

You expect libc to undo any initialisation that it did when the second
last thread in a process exits?

Postponing initialisation of locks for a multithreaded process is good:
many Unix processes remain single threaded.  Undoing this work for a
process that has been multithreaded isn't an obvious win; such processes
are rather likely to spawn more threads, surely?

I would think of your example as a multithreaded process that currently
only had one thread. :-|

fork() sits really unhappily with the POSIX threads model.  I am sure if
the POSIX threads folk could have they would have outlawed fork() in
multithreaded processes, but that's just not practical on Unix (er,
POSIX :-) systems.

Giles