private function removeTask(AsyncTask $task, $force = false)
{
$task->setGarbage();
if (isset($this->taskWorkers[$task->getTaskId()])) {
if (!$force and ($task->isRunning() or !$task->isGarbage())) {
return;
}
$this->workerUsage[$this->taskWorkers[$task->getTaskId()]]--;
}
unset($this->tasks[$task->getTaskId()]);
unset($this->taskWorkers[$task->getTaskId()]);
$task->cleanObject();
}