diff --git a/src/pocketmine/Thread.php b/src/pocketmine/Thread.php index 2c539b90e..a3d7f41be 100644 --- a/src/pocketmine/Thread.php +++ b/src/pocketmine/Thread.php @@ -67,14 +67,10 @@ abstract class Thread extends \Thread{ public function start(?int $options = \PTHREADS_INHERIT_ALL){ ThreadManager::getInstance()->add($this); - if(!$this->isRunning() and !$this->isJoined() and !$this->isTerminated()){ - if($this->getClassLoader() === null){ - $this->setClassLoader(); - } - return parent::start($options); + if($this->getClassLoader() === null){ + $this->setClassLoader(); } - - return false; + return parent::start($options); } /** @@ -83,12 +79,9 @@ abstract class Thread extends \Thread{ public function quit(){ $this->isKilled = true; - $this->notify(); - if(!$this->isJoined()){ - if(!$this->isTerminated()){ - $this->join(); - } + $this->notify(); + $this->join(); } ThreadManager::getInstance()->remove($this); diff --git a/src/pocketmine/Worker.php b/src/pocketmine/Worker.php index f79f502d8..fffa93248 100644 --- a/src/pocketmine/Worker.php +++ b/src/pocketmine/Worker.php @@ -67,14 +67,10 @@ abstract class Worker extends \Worker{ public function start(?int $options = \PTHREADS_INHERIT_ALL){ ThreadManager::getInstance()->add($this); - if(!$this->isRunning() and !$this->isJoined() and !$this->isTerminated()){ - if($this->getClassLoader() === null){ - $this->setClassLoader(); - } - return parent::start($options); + if($this->getClassLoader() === null){ + $this->setClassLoader(); } - - return false; + return parent::start($options); } /** @@ -83,16 +79,10 @@ abstract class Worker extends \Worker{ public function quit(){ $this->isKilled = true; - $this->notify(); - if($this->isRunning()){ - $this->shutdown(); + while($this->unstack() !== null); $this->notify(); - $this->unstack(); - }elseif(!$this->isJoined()){ - if(!$this->isTerminated()){ - $this->join(); - } + $this->shutdown(); } ThreadManager::getInstance()->remove($this);