Use time_sleep_until() instead of usleep(), improved thread kill

This commit is contained in:
Shoghi Cervantes 2015-05-03 23:17:39 +02:00
parent d830386786
commit 0ddf396b08
No known key found for this signature in database
GPG Key ID: 78464DB0A7837F89
2 changed files with 6 additions and 15 deletions

View File

@ -466,20 +466,10 @@ namespace pocketmine {
foreach(ThreadManager::getInstance()->getAll() as $id => $thread){
if($thread->isRunning()){
$logger->debug("Stopping " . (new \ReflectionClass($thread))->getShortName() . " thread");
if($thread instanceof Thread){
$thread->kill();
sleep(1);
if($thread->isRunning()){
$thread->detach();
}
}elseif($thread instanceof Worker){
$thread->kill();
sleep(1);
if($thread->isRunning()){
$thread->detach();
}
}
$logger->debug("Killing " . (new \ReflectionClass($thread))->getShortName() . " thread");
$thread->kill();
sleep(1);
$thread->detach();
}elseif(!$thread->isJoined()){
if(!$thread->isTerminated()){
$logger->debug("Joining " . (new \ReflectionClass($thread))->getShortName() . " thread");
@ -487,6 +477,7 @@ namespace pocketmine {
}else{
$logger->debug("Killing " . (new \ReflectionClass($thread))->getShortName() . " thread");
$thread->kill();
$thread->detach();
}
}
}

View File

@ -2186,7 +2186,7 @@ class Server{
private function tickProcessor(){
while($this->isRunning){
$this->tick();
usleep((int) max(1, ($this->nextTick - microtime(true)) * 1000000 - 2000));
time_sleep_until($this->nextTick - 0.001);
}
}