mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-06 01:46:04 +00:00
This commit is contained in:
@ -77,8 +77,10 @@ class ServerScheduler{
|
||||
* @return void
|
||||
*/
|
||||
public function scheduleAsyncTask(AsyncTask $task){
|
||||
$id = $this->nextId();
|
||||
$task->setTaskId($id);
|
||||
$this->asyncPool->submit($task);
|
||||
$this->asyncTaskStorage[spl_object_hash($task)] = $task;
|
||||
$this->asyncTaskStorage[$id] = $task;
|
||||
++$this->asyncTasks;
|
||||
}
|
||||
|
||||
@ -222,6 +224,12 @@ class ServerScheduler{
|
||||
|
||||
if($this->asyncTasks > 0){ //Garbage collector
|
||||
$this->asyncPool->collect([$this, "collectAsyncTask"]);
|
||||
|
||||
foreach($this->asyncTaskStorage as $asyncTask){
|
||||
if($asyncTask->isFinished() and !$asyncTask->isCompleted()){
|
||||
$this->collectAsyncTask($asyncTask);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -230,7 +238,7 @@ class ServerScheduler{
|
||||
--$this->asyncTasks;
|
||||
$task->onCompletion(Server::getInstance());
|
||||
$task->setCompleted();
|
||||
unset($this->asyncTaskStorage[spl_object_hash($task)]);
|
||||
unset($this->asyncTaskStorage[$task->getTaskId()]);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user