Semaphores are provided to synchronise co-operating threads. They are Kernel objects and, as such, are managed by the Kernel.
Access to a semaphore is through an RSemaphore handle.
The semaphores are counting semaphores, having a
The mechanism by which a thread waits on a semaphore is part of the overall management of thread scheduling.
For general applications, it is not common to explicitly create a semaphore; most applications are interested in making asynchronous requests to service providers. When a thread is created, a
After making one or more asynchronous requests, a thread calls User::WaitForAnyRequest() to wait for one of the requests to complete or calls User::WaitForRequest() to wait for a specific request to complete. A service provider calls User::RequestComplete() to signal request completion.
Semaphores are provided to synchronise co-operating threads. They are Kernel +objects and, as such, are managed by the Kernel.
+Access to a semaphore is through an RSemaphore handle.
+The semaphores are counting semaphores, having a
The mechanism by which a thread waits on a semaphore is part of the overall +management of thread scheduling.
+For general applications, it is not common to explicitly create a semaphore;
+most applications are interested in making asynchronous requests to service
+providers. When a thread is created, a
After making one or more asynchronous requests, a thread calls User::WaitForAnyRequest() +to wait for one of the requests to complete or calls User::WaitForRequest() +to wait for a specific request to complete. A service provider calls User::RequestComplete() +to signal request completion.
+