Semaphore

Inherits: Reference < Object

A synchronization semaphore.

Description

A synchronization semaphore which can be used to synchronize multiple Threads. Initialized to zero on creation. Be careful to avoid deadlocks. For a binary version, see Mutex.

Warning:

To guarantee that the operating system is able to perform proper cleanup (no crashes, no deadlocks), these conditions must be met:

  • By the time a Semaphore's reference count reaches zero and therefore it is destroyed, no threads must be waiting on it.

  • By the time a Thread's reference count reaches zero and therefore it is destroyed, it must not be waiting on any semaphore.

Tutorials

Methods

Error

post ( )

Error

try_wait ( )

Error

wait ( )


Method Descriptions

Error post ( )

Lowers the Semaphore, allowing one more thread in.

Note: This method internals' can't possibly fail, but an error code is returned for backwards compatibility, which will always be @GlobalScope.OK.


Error try_wait ( )

Like wait, but won't block, so if the value is zero, fails immediately and returns @GlobalScope.ERR_BUSY. If non-zero, it returns @GlobalScope.OK to report success.


Error wait ( )

Waits for the Semaphore, if its value is zero, blocks until non-zero.

Note: This method internals' can't possibly fail, but an error code is returned for backwards compatibility, which will always be @GlobalScope.OK.