LinuxThreads
A true process sharing memory space with others
Clone
n threads, but n+2 process, "Linux needs only one clone" (Plan 9, R-Fork; SGI S-Proc)
synchronization resource unfairness
one thread may unlock then lock before scheduling, e.g. two printfs
forcing resource transference
singal dispatching problem
If the signal is sent via kill() or the tty interface (e.g. by pressing ctrl-C), then the POSIX specs say that the handler is executed by any thread in the process that does not currently block the signal.
The latter case is where LinuxThreads departs from the POSIX specs. In LinuxThreads, there is no real notion of ``the process as a whole'': in the kernel, each thread is really a distinct process with a distinct PID, and signals sent to the PID of a thread can only be handled by that thread.
Expensive for context, switch, synchronization