[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: pthread creates one extra thread
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/