English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
Threads & Fork
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2005-11-22 (15:50)
From: Oliver Bandel <oliver@f...>
Subject: Re: [Caml-list] Threads & Fork
On Tue, Nov 22, 2005 at 04:39:07PM +0100, Florian Weimer wrote:
> * Jonathan Bryant:
> > I'm confused as to why the attached code hangs.  My understanding of
> > Unix.fork () is that it completely clones the current process, which in
> > my understanding, clones the processes's threads as well.  Apparently,
> > though, that is not the case, because I can't join the thread in both
> > the parent and the child.
> I can't speak for the OCaml run-time, but POSIX fork only duplicates
> the current thread, so the new process is essentially single-threaded.

I doubt that this is true.
Unix-fork() copies a complete process.
If the original has threads, the copy also have.
I don't think that POSIX handles this different to old Unix API.

Unix-module should do the same as the C-call of fork(2).

Threads are running inside a process, like any other
function. So all should be copied completely.

But using POSIX-threads and Unix-API can yield to many problems,
for example POSIX threading signals and Unix-signals are clashing
together and the behaviour can be undefined...