Hi,

Just want to confirm the correctness of an observation I've made.

I have executed a multithreaded application with varying number of threads and 
I'm curious about the process termination part.

I'm running on a system with 4 processors so I have executed the application 
with 1, 2, 3, and 4 threads to see the pattern.

When running with 1 single thread I can see:
1 call to proc_create, 1 call to thread_create, and 1 call to lwp_create, 

regarding termination I see 1 call to proc_exit and 1 call to thread_exit, but 
no call to lwp_exit, which means that it might be kept in the system by the 
kernel.

when running 2 threads, a similar scenario occurs:

1 proc_create, 2 thread_create, 2 lwp_create, 

termination: 1 proc_exit, 1 thread_exit, 1 lwp_exit (thus 1 less than number of 
threads)

3 threads:

1 proc_create, 3 thread_create, 3 lwp_create

termination:  1 proc_exit, 1 thread_exit, 2 lwp_exit

4 threads:

1 proc_create, 4 thread_create, 4 lwp_create

termination 1 proc_exit, 1 thread_exit, 3 lwp_exit

So to summarize:

The pattern seem to be the following:

1 process is created and terminated. Regardless of how many threads are created 
(NUMTHREADS), there is only 1 thread that is terminated (the first?). Finally, 
the number of terminated LWPs seem to be NUMTHREADS -1 (the lwp created last 
seem to be the choice here).

This is the pattern I have seen from my executions and I have tried to verify 
this by looking in the Solaris Internals book, chapter 2.9 - process 
termination. The process exit function pseudocode indicates that "all but 1 
LWP's should be terminated", which confirms my NUMTHREADS -1 observation, but I 
can't see something that verifies that only 1 thread is terminated, regardless 
of how many have been created. Should I see it as a 1:1 mapping between the 
process termination and the termination of the first thread and that the other 
(child threads) have joined with the first thread before termination, which 
means that they are "virtually" terminated as well? Or are the still lurking in 
the system as the remaining LWP?

Regards,
Mladen
 
 
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to