[Spread-users] Spread and fork ()
jschultz at spreadconcepts.com
Tue Nov 23 12:05:36 EST 2004
Currently, Spread doesn't really support the fork() process model.
Within the client library, Spread uses the mailbox fd as a handle to
identify internal connection state. This means you can't just close() a
Spread mailbox. You have to SP_close() it or the library will get
confused about its internal connection state.
But, SP_close() also sends a signal back to the Spread daemon, which
causes it to close the connection on its end, which isn't what you
usually want in a fork/close model. There is an unexposed function in
the library called SP_kill that simply closes the fd and cleans up the
internal connection state, but its use is not "officially" supported.
Finally, Spread uses pthread mutexes to synchronize use of its internal
connection state(s). But, Spread does not install fork handlers using
pthread_atfork() to reset all the mutexes properly. So, in a forked
child mutexes may be held by non-existent threads in the new process.
So, the fork/close model isn't really supported in Spread currently.
John Lane Schultz
Spread Concepts LLC
Phn: 443 838 2200
J C Lawrence wrote:
> On Tue, 23 Nov 2004 00:22:27 -0500
> Ryan Caudy <rcaudy at gmail.com> wrote:
>>So, to me, it's hard to see an application where you would really
>>benefit from sharing one mbox in multiple processes. I'd be
>>interested to know about your application.
> The application is a distributed RPC system where the nodes executing a
> given RPC are anonymous to the caller. I use a common control channel
> for all the execution processes (there may be multiple processes per
> node), as well as the population of callers/initiators. However none of
> that requires or benefits from a single mbox being shared between
> J C Lawrence
> ---------(*) Satan, oscillate my metallic sonatas.
> claw at kanga.nu He lived as a devil, eh?
> http://www.kanga.nu/~claw/ Evil is a name of a foeman, as I live.
> Spread-users mailing list
> Spread-users at lists.spread.org
More information about the Spread-users