24 struct _KineticSemaphore
26 pthread_mutex_t mutex;
27 pthread_cond_t complete;
33 KineticSemaphore * sem = calloc(1,
sizeof(KineticSemaphore));
36 pthread_mutex_init(&sem->mutex, NULL);
37 pthread_cond_init(&sem->complete, NULL);
38 sem->signaled =
false;
45 pthread_mutex_lock(&sem->mutex);
47 pthread_cond_signal(&sem->complete);
48 pthread_mutex_unlock(&sem->mutex);
59 pthread_mutex_destroy(&sem->mutex);
60 pthread_cond_destroy(&sem->complete);
71 pthread_mutex_lock(&sem->mutex);
73 pthread_cond_wait(&sem->complete, &sem->mutex);
75 pthread_mutex_unlock(&sem->mutex);
77 pthread_mutex_destroy(&sem->mutex);
78 pthread_cond_destroy(&sem->complete);
bool KineticSemaphore_DestroyIfSignaled(KineticSemaphore *sem)
Destorys the KineticSemaphore if it has been signaled.
bool KineticSemaphore_CheckSignaled(KineticSemaphore *sem)
Reports whether the KineticSemaphore has been signaled.
void KineticSemaphore_WaitForSignalAndDestroy(KineticSemaphore *sem)
Blocks until the given semaphore is signaled.
void KineticSemaphore_Signal(KineticSemaphore *sem)
Signals KineticSemaphore.
KineticSemaphore * KineticSemaphore_Create(void)
Creates a KineticSemaphore.