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