system call sched_yield() doesn't work on Linux 2.2

From: Mohit Aron (aron@Zambeel.com)
Date: Sat Feb 03 2001 - 17:53:26 EST

  • Next message: Shawn Starr: "Re: PS hanging in 2.4.1 - HAPPENING NOW!!!"

    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


    #include <stdio.h>
    #include <sched.h>
    #include <pthread.h>

    static pthread_t thread1, thread2;

    static void *thread1_func(void *arg)
    {
      int i;

      for (i=0; i < 5 ;i++) {
        printf("Thread1\n");
        if (sched_yield()) printf("error in yielding\n");
      }
    }

    static void *thread2_func(void *arg)
    {
      int i;

      for (i=0; i < 5 ;i++) {
        printf("Thread2\n");
        if (sched_yield()) printf("error in yielding\n");
      }
    }

    int main(int argc, char **argv)
    {
      pthread_create(&thread1, NULL, thread1_func, NULL);
      pthread_create(&thread2, NULL, thread2_func, NULL);

      sleep(10);

      return 0;
    }

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



    This archive was generated by hypermail 2b29 : Sat Feb 03 2001 - 17:54:55 EST