Browse thread
Threads & Fork
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| 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... Ciao, Oliver