Re: Question about sched_yield()

From: David Schwartz (davids@webmaster.com)
Date: Tue Jun 18 2002 - 21:11:52 EST


On Tue, 18 Jun 2002 18:45:55 -0400, Stevie O wrote:

>At 11:00 AM 6/18/2002 -0700, David Schwartz wrote:

>>This is the same error repeated again. Since you realize that an endless
>>loop on sched_yield is *not* equivalent to blocking, why do you then say
>>"in
>>fact doing useful work"? By what form of ESP is the kernel supposed to
>>determine that the sched_yield task is not 'doing useful work' and the
>>other
>>task is?

>By this form of ESP: sched_yield() means "I have nothing better to do right
>now, give my time to someone who does".

        No, this is not what sched_yield means. What 'sched_yield' means is that
you're at a point where it's convenient for another process to run. For
example, perhaps you just released a mutex that you held for a long period of
time, or perhaps you could function more efficiently if you could acquire a
resource another thread holds.

>If a thread is doing useful work,
>why would it call sched_yield() ?!?

        Perhaps to allow other threads to make forward progress. Perhaps to give
other threads a chance to use a resource it just released. Perhaps in hopes
that another thread will release a resource it could benefit from being able
to acquire.

        DS

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Jun 23 2002 - 22:00:18 EST