Antes de nada comentarte que si has usado hilos en java, la política (notify, wait...) es muy similar.
El ejemplo es el siguiente:
#include <pthread.h>
pthread_attr_t tattr;
pthread_t tid;
extern void *start_routine(void *arg);
void *arg;
int ret;
/* default behavior*/
ret = pthread_create(&tid, NULL, start_routine, arg);
/* initialized with default attributes */
ret = pthread_attr_init(&tattr);
/* default behavior specified*/
ret = pthread_create(&tid, &tattr, start_routine, arg);
Analízalo, es muy sencillito.
Tienes muchos más ejemplos (incluidos este) y muchas más aplicaciones en esta página.
http://www.cs.cf.ac.uk/Dave/C/node29.html#SECTION002900000000000000000Leételo, porque esta genial. Por cierto, recuerda que el tema de los threads difiere de linux a msdos (ya sabes, cosas del kernel). Venga, espero haberte ayudado, no dudes en consultarme más si algo no te quedo claro.