Re: Question about sched_yield()

David Schwartz (davids@webmaster.com)
Tue, 18 Jun 2002 19:11:52 -0700


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/