#include #include #include #include volatile int flagW; /*let worker know to complete */ void *thread_worker(void* arg) { printf("Worker about to signal to main thread\n"); flagW = 1; pthread_exit(NULL); } void create_thread(pthread_t *thread, void*(*func)(void*), int prio) { pthread_attr_t attr; struct sched_param param; param.sched_priority = sched_get_priority_min(SCHED_FIFO) + prio; pthread_attr_init(&attr); pthread_attr_setinheritsched (&attr, PTHREAD_EXPLICIT_SCHED); pthread_attr_setschedparam(&attr, ¶m); pthread_attr_setschedpolicy(&attr, SCHED_FIFO); if (pthread_create(thread, &attr, func, (void *)0)) { perror("pthread_create failed"); exit(99); } pthread_attr_destroy(&attr); } int main(void) { pthread_t worker, interrupter; create_thread(&worker, thread_worker, 10); for (;flagW == 0;) { } return 0; }