21.01.2015 Views

INtime® 3.1 Software - tenAsys

INtime® 3.1 Software - tenAsys

INtime® 3.1 Software - tenAsys

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

INtime <strong>3.1</strong> <strong>Software</strong><br />

Semaphores<br />

A semaphore is a counter that takes positive integer values called units. Threads<br />

release units to and wait for units from the semaphore. A semaphore can synchronize a<br />

thread’s actions with other threads and can also be used to provide mutual exclusion<br />

for data or a resource (although a mutex may be better in that case).<br />

A thread can release one or more units to a semaphore. Waiting can be done for a single<br />

unit only. A semaphore does not protect against priority inversion (described in<br />

Priority inversions on page 37). Deleting a semaphore causes all threads waiting for that<br />

semaphore to be woken up with an ERROR_INVALID_HANDLE error code.<br />

Semaphore functions include:<br />

iwin32 calls<br />

CreateSemaphore or RtCreateSemaphore<br />

OpenSemaphore or RtOpenSemaphore<br />

ReleaseSemaphore or RtReleaseSemaphore<br />

WaitForMultipleObjects or<br />

RtWaitForMultipleObjects<br />

WaitForSingleObject or RtWaitForSingleObject<br />

iwin32x calls<br />

RtCreateSemaphore<br />

RtOpenSemaphore<br />

RtReleaseSemaphore<br />

RtWaitForMultipleObjects<br />

RtWaitForSingleObjects<br />

Events<br />

An event is a flag that can be set (signaled) or reset; it can be reset manually (once set, it<br />

remains set until explicitly reset by a ResetEvent call, independent of how many<br />

threads are woken up) or automatically (after waking up one thread, the event is reset).<br />

Deleting an event causes all threads waiting for that event to be woken up with an<br />

ERROR_INVALID_HANDLE error code.<br />

Event functions include:<br />

iwin32 calls<br />

CreateEvent or RtCreateEvent<br />

OpenEvent or RtOpenEvent<br />

PulseEvent or RtPulseEvent<br />

ResetEvent or RtResetEvent<br />

SetEvent or RtSetEvent<br />

WaitForMultipleObjects or<br />

RtWaitForMultipleObjects<br />

WaitForSingleObject or RtWaitForSingleObject<br />

iwin32x calls<br />

RtCreateEvent<br />

RtOpenEvent<br />

RtPulseEvent<br />

RtResetEvent<br />

RtSetEvent<br />

RtWaitForMultipleObjects<br />

RtWaitForSingleObjects<br />

146

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!