Inside SQLOS – Scheduling
It has to wait on the scheduler A runnable queue, there is no switching of tasks to alternative schedulers.  The time accumulated waiting for the scheduler to be available is referred to as a signal wait.


  If a thread is ready to go, but the scheduler to which it’s assigned
  currently has another session running, then it will be placed in the
  “Runnable” queue. This means it’s in the queue to get on the
  processor. This is referred to as a signal wait (ref).


This is different and separate to the time accumulated while Suspended on the wait list.


  The signal wait time is exposed by the signal_wait_time_ms column, and
  is solely CPU wait time. If a session is waiting for another resource
  to become available in order to proceed, such as a locked page, or if
  a running session needs to perform I/O, then it’s moved to the wait
  list. This is a resource wait and the waiting session’s status will be
  recorded as “Suspended.” (ref).


The relationship from sessions to schedulers maps out as:

Session -> Task -> Thread -> Scheduler -> Logical CPU

Once a thread is allocated to a scheduler it remains on that scheduler until it completes. It may move repeatedly between Running, Suspended and Runnable queues but will remain assigned to one scheduler.

A session may of course be comprised of multiple tasks and threads which are distributed across multiple schedulers as the result of a parallel execution plan.