Dann Corbit wrote:
>
> > -----Original Message-----
> > From: mlw [mailto:markw@mohawksoft.com]
> > Sent: Tuesday, May 07, 2002 7:58 AM
> > To: Marc G. Fournier
> > Cc: Tom Lane; PostgreSQL-development
> > Subject: Re: [HACKERS] OK, lets talk portability.
> >
> >
> > "Marc G. Fournier" wrote:
> > >
> > > On Tue, 7 May 2002, mlw wrote:
> > >
> > > > Tom Lane wrote:
> > > > > And no, I don't want to undo those changes. Especially
> > not if the
> > > > > only reason for it is to not have to use Cygwin on
> > Windows. Most
> > > > > of these changes made the startup code substantially simpler,
> > > > > faster, and more reliable.
> > > >
> > > > Then I think the notion of a pure Windows version is dead
> > in the water.
> > > > Writing a fork()-like API for Windows is, of course,
> > doable as evidenced
> > > > by cygwin, and from a general theory seems like a pretty straight
> > > > forward thing to do (with a few low level tricks of
> > course) but the
> > > > details are pretty scary.
> > >
> > > How is Apache doing this? I believe they do allow the
> > pre-forked model to
> > > work, so how are they getting around those limitations?
> >
> > Apache and PostgreSQL are quite different in their
> > requirements of shared
> > memory. Apache (2.x) simply uses CreateProcess and passes
> > duplicate file
> > handles.
>
> The way to make CreateProcess() work for PostgreSQL is very simple.
>
> By the time of the fork(), not much has been done. Some needed
> calculations can simply be stored into shared memory (which is trivial
> to implement). Some other tasks can simply be executed by the cloned
> process, exactly as they were executed in the server.
>
> Using fork() on Win32 is pointless, hopless, awful. Don't even think
> about it. It's a death warrant.
Preaching to the choir my friend.