On Mon, Jan 05, 2004 at 13:51:25 -0800, Shesha Sreenivasamurthy wrote: > Hi All, > I Have the following small code for creating threads. > > #include <stdio.h> > #include <pthread.h> > > void my_func_1 (void *arg) { > while(1) {} > } > > > int main() { > pthread_t thread_1; > pthread_create(&thread_1, NULL,(void*)& my_func_1, NULL); > > while(1) { } > exit(0); > } > > gcc -lpthread -o thread test.c > > I expect to have created 2 threads. But when I do ps -ef | grep thread I > see 3. > Say If i use pthread_create and create one more thread, then instead of > 3 I see > 4. Does any one know what is the reason for this behavior? > > Any help is highly regarded. pthreads require that any thread can join any other thread. But a process can only wait for it's children. So on first pthread_create, a master thread is created, which does all the cloning and waiting (and the main function continues in the CHILD). ------------------------------------------------------------------------------- Jan 'Bulb' Hudec <bulb@ucw.cz> -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/