On Windows systems the jobserver is implemented as a named semaphore. The semaphore will be set with an initial count equal to the number of available slots; to obtain a slot you must wait on the semaphore (with or without a timeout). To release a slot, release the semaphore.
To access the semaphore you must parse the
MAKEFLAGS variable and
look for the argument string
NAME’ is the name of the named semaphore. Use this name with
OpenSemaphore to create a handle to the semaphore.
There are various error conditions you must consider to ensure your implementation is robust:
SIGINT), etc. You may want to install signal handlers to manage this write-back.