+ int r;
+ OSThreadId tid;
+
+ /* Locks assumed: rts_mutex */
+
+ /* If more than one worker thread is known to be blocked waiting
+ on thread_ready_cond, signal it rather than creating a new one.
+ */
+ if ( rts_n_waiting_tasks > 0) {
+ IF_DEBUG(scheduler,fprintf(stderr,
+ "scheduler: startTask: %d tasks waiting, not creating new one.\n",
+ rts_n_waiting_tasks););
+ signalCondition(&thread_ready_cond);
+ /* Not needed, but gives more 'interesting' thread schedules when testing */
+ yieldThread();
+ return;
+ }