On Thu, 3 Apr 2008, Mulyadi Santosa wrote:
> On Wed, Apr 2, 2008 at 9:52 PM, Robert P. J. Day <[EMAIL PROTECTED]> wrote:
... snip ...
> > * only the thread group leader of a multithreaded application is
> > on the system-wide task list. the additional threads in that
> > thread group are on a separate list managed by the thread group
> > leader.
> uhm, i don't think so. AFAIK in new CFS scheduler, they are just
> treated "differently" to avoid excessive scheduling latency between
> them.. something you probably need because in user space programming
> we usually expect fast switching between threads.
just to summarize, if you examine these fields from struct
"task_struct" (only the fields i care about are listed here):
struct task_struct {
struct list_head tasks;
pid_t pid;
pid_t tgid;
struct task_struct *group_leader; /* threadgroup leader */
struct list_head thread_group;
};
this is what i gather:
* "tasks" is the system-wide lists of tasks, including all threads in
a thread group (unlike what i posted earlier)
* "pid" is the *individual* process ID of each process/thread
* "tgid" is the ID of the thread group leader (and it's what's
returned by getpid(), which is required by POSIX)
* "group_leader" is the pointer to the thread group leader which,
AFAICT, should have a process ID of "tgid"
* "thread_group" represents the doubly-linked list of threads in this
thread group (an empty list in the non-thread case, i'm guessing)
rday
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry:
Have classroom, will lecture.
http://crashcourse.ca Waterloo, Ontario, CANADA
========================================================================
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ