What version of Linux are you using ? What I see is the following:
        Thread1
        Thread1
        Thread1
        Thread1
        Thread1
        Thread2
        Thread2
        Thread2
        Thread2
        Thread2

Also, it is NOT unrealistic to expect perfect alternation. The definition
of sched_yield in the manpage says that sched_yield() puts the thread under
question last in the run queue. So perfect alternation should have occurred.
I've also tested the code on Solaris - there is perfect alternation there.


- Mohit


-----Original Message-----
From: David Schwartz [mailto:[EMAIL PROTECTED]]
Sent: Sunday, February 04, 2001 3:09 AM
To: Mohit Aron; [EMAIL PROTECTED]
Subject: RE: system call sched_yield() doesn't work on Linux 2.2



        The program you attached worked perfectly for me. You need to
'fflush(stdout);' after each 'printf'. You didn't expect perfect alternation
did you? That's totally unrealistic. You cannot use the scheduler as a
synchronization mechanism.

--

Thread1
Thread1
Thread2
Thread1
Thread1
Thread2
Thread1
Thread2
Thread2
Thread2

--

        DS

> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of Mohit Aron
> Sent: Saturday, February 03, 2001 2:53 PM
> To: [EMAIL PROTECTED]
> Subject: system call sched_yield() doesn't work on Linux 2.2
>
>
> Hi,
>       the system call sched_yield() doesn't seem to work on Linux
> 2.2. Does
> anyone know of a kernel patch that fixes this ?
>
> Attached below is a small program that uses pthreads and demonstrates that
> sched_yield() doesn't work. Basically, the program creates two
> threads that
> alternatively try to yield CPU to each other.
>
>
> - Mohit
>
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to