public function submitTask(AsyncTask $task)
{
if (isset($this->tasks[$task->getTaskId()]) or $task->isGarbage()) {
return;
}
$selectedWorker = mt_rand(0, $this->size - 1);
$selectedTasks = $this->workerUsage[$selectedWorker];
for ($i = 0; $i < $this->size; ++$i) {
if ($this->workerUsage[$i] < $selectedTasks) {
$selectedWorker = $i;
$selectedTasks = $this->workerUsage[$i];
}
}
$this->submitTaskToWorker($task, $selectedWorker);
}