previous | start | next

Thread Switch (in C)

void thread_switch( ) {
  thread_t NextThread, OldCurrent;

  NextThread = dequeue(RunQueue);
  OldCurrent = CurrentThread;
  CurrentThread = NextThread;
  swapcontext(&OldCurrent->context, &NextThread->context);

  // We're now in the new thread's context

}
   

What if there are no runnable threads; i.e., what if the RunQueue is empty?



previous | start | next