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().