/* ---------------------------------------------------------------------------
- * $Id: Schedule.c,v 1.195 2004/04/13 13:43:11 simonmar Exp $
+ * $Id: Schedule.c,v 1.196 2004/05/06 12:20:04 wolfgang Exp $
*
* (c) The GHC Team, 1998-2003
*
// just because the last one hasn't yet reached the
// "waiting for capability" state
startingWorkerThread = rtsTrue;
- startTask(taskStart);
+ if(!startTask(taskStart))
+ {
+ startingWorkerThread = rtsFalse;
+ }
}
}
}
taskCount = 0;
}
-void
+rtsBool
startTask ( void (*taskStart)(void) )
{
int r;
rts_n_waiting_tasks););
// the task will run as soon as a capability is available,
// so there's no need to wake it.
- return;
+ return rtsFalse;
}
/* If the task limit has been reached, just return. */
if (maxTasks > 0 && taskCount == maxTasks) {
IF_DEBUG(scheduler,fprintf(stderr,"scheduler: startTask: task limit (%d) reached, not creating new one.\n",maxTasks));
- return;
+ return rtsFalse;
}
taskCount++;
IF_DEBUG(scheduler,fprintf(stderr,"scheduler: startTask: new task %ld (total_count: %d; waiting: %d)\n", tid, taskCount, rts_n_waiting_tasks););
- return;
+ return rtsTrue;
}
extern void stopTaskManager ( void );
extern void resetTaskManagerAfterFork ( void );
-extern void startTask ( void (*taskStart)(void) );
+extern rtsBool startTask ( void (*taskStart)(void) );
#endif /* RTS_SUPPORTS_THREADS */
#endif /* __TASK_H__ */