21 #ifndef __pbd_semutils_h__
22 #define __pbd_semutils_h__
24 #if (defined PLATFORM_WINDOWS && !defined USE_PTW32_SEMAPHORE)
25 #define WINDOWS_SEMAPHORE 1
28 #ifdef WINDOWS_SEMAPHORE
30 #elif defined USE_FUTEX_SEMAPHORE
34 # include <semaphore.h>
43 #ifdef WINDOWS_SEMAPHORE
48 sem_t* ptr_to_sem()
const {
return _sem; }
49 #elif defined USE_FUTEX_SEMAPHORE
51 std::atomic<int> _value;
61 #if defined WINDOWS_SEMAPHORE || defined USE_FUTEX_SEMAPHORE
68 int signal () {
return sem_post (ptr_to_sem()); }
69 int wait () {
return sem_wait (ptr_to_sem()); }
70 int reset () {
int rv = 0 ;
while (sem_trywait (ptr_to_sem()) == 0) ++rv;
return rv; }
sem_t * ptr_to_sem() const
Semaphore(const char *name, int val)
GtkImageIconNameData name