#include #include #include sem_t sem; void * thr_routine(void *arg) { sem_wait(&sem); return (0); } int main() { pthread_t td; if (sem_init(&sem, 1, 0) != 0) { perror("sem_init"); return (0); } pthread_create(&td, NULL, thr_routine, 0); sleep(2); printf("cancelling...\n"); pthread_cancel(td); pthread_join(td, NULL); return (0); }