17f8abc4f2af82c261c74e6f25215b9ea0d774f41florian#include <pthread.h> 27f8abc4f2af82c261c74e6f25215b9ea0d774f41florian#include <string.h> 37f8abc4f2af82c261c74e6f25215b9ea0d774f41florian 47f8abc4f2af82c261c74e6f25215b9ea0d774f41florianint main() { 57f8abc4f2af82c261c74e6f25215b9ea0d774f41florian pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 67f8abc4f2af82c261c74e6f25215b9ea0d774f41florian pthread_cond_t cond = PTHREAD_COND_INITIALIZER; 77f8abc4f2af82c261c74e6f25215b9ea0d774f41florian 87f8abc4f2af82c261c74e6f25215b9ea0d774f41florian // This time has most definitely passed already. (Epoch) 97f8abc4f2af82c261c74e6f25215b9ea0d774f41florian struct timespec now; 107f8abc4f2af82c261c74e6f25215b9ea0d774f41florian memset(&now, 0, sizeof(now)); 117f8abc4f2af82c261c74e6f25215b9ea0d774f41florian 127f8abc4f2af82c261c74e6f25215b9ea0d774f41florian pthread_mutex_lock(&mutex); 137f8abc4f2af82c261c74e6f25215b9ea0d774f41florian pthread_cond_timedwait(&cond, &mutex, &now); 147f8abc4f2af82c261c74e6f25215b9ea0d774f41florian pthread_mutex_unlock(&mutex); 157f8abc4f2af82c261c74e6f25215b9ea0d774f41florian 167f8abc4f2af82c261c74e6f25215b9ea0d774f41florian pthread_mutex_destroy(&mutex); 177f8abc4f2af82c261c74e6f25215b9ea0d774f41florian pthread_cond_destroy(&cond); 187f8abc4f2af82c261c74e6f25215b9ea0d774f41florian 197f8abc4f2af82c261c74e6f25215b9ea0d774f41florian return 0; 207f8abc4f2af82c261c74e6f25215b9ea0d774f41florian} 21