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

Reply via email to