Just queueing is problematic, as all threads might be busy waiting for events
that the queued (but never executed) job delivers.
while (this->jobs->remove_first(this->jobs,
(void**)&job) == SUCCESS)
{
- if (lib->processor->get_threads(lib->processor))
- {
- lib->processor->queue_job(lib->processor, job);
- }
- else
- {
- job->execute(job);
- job->destroy(job);
- }
+ lib->processor->execute_job(lib->processor, job);
}
/* we temporarily disable a notified FD, rebuild FDSET */
return JOB_REQUEUE_DIRECT;