Merge branch 'release/3.2'

This commit is contained in:
Dylan K. Taylor 2018-07-26 14:40:39 +01:00
commit b9769c407b
2 changed files with 10 additions and 27 deletions

View File

@ -67,14 +67,10 @@ abstract class Thread extends \Thread{
public function start(?int $options = \PTHREADS_INHERIT_ALL){ public function start(?int $options = \PTHREADS_INHERIT_ALL){
ThreadManager::getInstance()->add($this); ThreadManager::getInstance()->add($this);
if(!$this->isRunning() and !$this->isJoined() and !$this->isTerminated()){ if($this->getClassLoader() === null){
if($this->getClassLoader() === null){ $this->setClassLoader();
$this->setClassLoader();
}
return parent::start($options);
} }
return parent::start($options);
return false;
} }
/** /**
@ -83,12 +79,9 @@ abstract class Thread extends \Thread{
public function quit(){ public function quit(){
$this->isKilled = true; $this->isKilled = true;
$this->notify();
if(!$this->isJoined()){ if(!$this->isJoined()){
if(!$this->isTerminated()){ $this->notify();
$this->join(); $this->join();
}
} }
ThreadManager::getInstance()->remove($this); ThreadManager::getInstance()->remove($this);

View File

@ -67,14 +67,10 @@ abstract class Worker extends \Worker{
public function start(?int $options = \PTHREADS_INHERIT_ALL){ public function start(?int $options = \PTHREADS_INHERIT_ALL){
ThreadManager::getInstance()->add($this); ThreadManager::getInstance()->add($this);
if(!$this->isRunning() and !$this->isJoined() and !$this->isTerminated()){ if($this->getClassLoader() === null){
if($this->getClassLoader() === null){ $this->setClassLoader();
$this->setClassLoader();
}
return parent::start($options);
} }
return parent::start($options);
return false;
} }
/** /**
@ -83,16 +79,10 @@ abstract class Worker extends \Worker{
public function quit(){ public function quit(){
$this->isKilled = true; $this->isKilled = true;
$this->notify();
if($this->isRunning()){ if($this->isRunning()){
$this->shutdown(); while($this->unstack() !== null);
$this->notify(); $this->notify();
$this->unstack(); $this->shutdown();
}elseif(!$this->isJoined()){
if(!$this->isTerminated()){
$this->join();
}
} }
ThreadManager::getInstance()->remove($this); ThreadManager::getInstance()->remove($this);