pocketmine\scheduler\AsyncPool::submitTask PHP Метод

submitTask() публичный Метод

public submitTask ( AsyncTask $task )
$task AsyncTask
    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);
    }

Usage Example

Пример #1
0
 /**
  * Submits an asynchronous task to the Worker Pool
  *
  * @param AsyncTask $task
  *
  * @return void
  */
 public function scheduleAsyncTask(AsyncTask $task)
 {
     if ($task->getTaskId() !== null) {
         throw new \UnexpectedValueException("Attempt to schedule the same AsyncTask instance twice");
     }
     $id = $this->nextId();
     $task->setTaskId($id);
     $task->progressUpdates = new \Threaded();
     $this->asyncPool->submitTask($task);
 }
All Usage Examples Of pocketmine\scheduler\AsyncPool::submitTask