On Wed, 5 Jul 2000, Paul D. Smith wrote:

>   jm> However, on Win32 I have lost parallel builds.

Sorry, I don't follow: how do you mean ``lost''?  Did your previous
setup somehow allowed parallel builds on Windows?

> The UNIX implementation of the jobserver requires UNIX-style pipes and
> POSIX-style signal handling, including sigaction(), the concept of
> non-blocking reads, etc.  To the best of my knowledge, not all of these
> things exist on Windows.

This is correct, to the best of my knowledge.  Signals are a PITA on
Windows in general (because Windows is basically a message-based
system, a framework in which signals don't easily fit).  So any
non-blocking reads followed by signals must be a PITA^2.

Pipes do exist, though.

> If someone is interested in thinking about it, or engineering a
> solution, I'd be happy to discuss it and think about the best way to
> integrate it into the current implementation.

One idea would be to implement this using temporary files to pass the
tokens.  However crude and kludgey, such an implementation would serve
a couple of useful purposes: it will at least provide a simple
prototype that is easy to write and debug, and which can be used as
base for more sophisticated implementations; and it will work for the
MS-DOS (a.k.a. DJGPP) port of Make when it runs on Windows.

But I never tried to read the Unix code with this implementation in
mind, so this idea might be totally off the mark.

FWIW, DJGPP does support sigactions.  Non-blocking reads could be 
replaced with a timer that calls select().

Reply via email to