blob: dc5e4feb2ffaf3a17c6c8bc52a17d286f398425c [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include <parlib/parlib.h>
#include <parlib/vcore.h>
#include <futex.h>
#include <pthread.h>
#define NUM_THREADS 10
pthread_t thandlers[NUM_THREADS];
void *handler(void *arg)
{
int id = pthread_self()->id;
int var = 0;
struct timespec timeout = {
.tv_sec = id,
.tv_nsec = 0
};
printf("Begin thread: %d\n", id);
futex(&var, FUTEX_WAIT, 0, &timeout, NULL, 0);
printf("End thread: %d\n", id);
return 0;
}
int main(int argc, char **argv)
{
for (int i=0; i<NUM_THREADS; i++) {
pthread_create(&thandlers[i], NULL, &handler, NULL);
}
for (int i=0; i<NUM_THREADS; i++) {
pthread_join(thandlers[i], NULL);
}
return 0;
}