Someone on darwin-dev recently asked how to go about obtaining a cross-process semaphore that can be waited on with a timeout on OS X.
POSIX semaphores currently don’t support this feature on OS X; nor do System V semaphores. Mach semaphores do support timeouts (see
/usr/include/mach/semaphore.h), but it isn’t immediately obvious how to pass one to another process.
Anyway, I thought I’d stick together a simple Mach server to implement named semaphores…
I’ve moved the code and most of the description to a new page, as that seemed better than leaving it here.