pthread_mutex_unlock(&p->mutex);
pthread_join(p->thread_id, 0);
pthread_cond_destroy(&p->work_available);
pthread_cond_destroy(&p->cond_sorting);
pthread_mutex_destroy(&p->mutex);
pthread_mutex_unlock(&p->mutex);
pthread_join(p->thread_id, 0);
pthread_cond_destroy(&p->work_available);
pthread_cond_destroy(&p->cond_sorting);
pthread_mutex_destroy(&p->mutex);