manpagez: man pages & more
info make
Home | html | info | man

File: make.info,  Node: Windows Jobserver,  Prev: POSIX Jobserver,  Up: Job Slots

13.1.2 Windows Jobserver Interaction
------------------------------------

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 '--jobserver-auth=NAME' where 'NAME' is the
name of the named semaphore.  Use this name with 'OpenSemaphore' to
create a handle to the semaphore.

   The only valid style for '--jobserver-style' is 'sem'.

   There are various error conditions you must consider to ensure your
implementation is robust:

   * Usually you will have a command-line argument controlling the
     parallel operation of your tool.  Consider whether your tool should
     detect situations where both the jobserver and the command-line
     argument are specified, and how it should react.

   * Your tool should be sure to release the semaphore for the tokens it
     read, even under error conditions.  This includes not only errors
     in your tool but also outside influences such as interrupts
     ('SIGINT'), etc.  You may want to install signal handlers to manage
     this write-back.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.