mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-07 04:17:07 +00:00
AsyncWorker: clean up nonsensical sleeper notifier handling code
This commit is contained in:
parent
bf99917f2a
commit
c05116849a
@ -24,12 +24,10 @@ declare(strict_types=1);
|
|||||||
namespace pocketmine\scheduler;
|
namespace pocketmine\scheduler;
|
||||||
|
|
||||||
use pmmp\thread\Runnable;
|
use pmmp\thread\Runnable;
|
||||||
use pmmp\thread\Thread as NativeThread;
|
|
||||||
use pmmp\thread\ThreadSafe;
|
use pmmp\thread\ThreadSafe;
|
||||||
use pmmp\thread\ThreadSafeArray;
|
use pmmp\thread\ThreadSafeArray;
|
||||||
use pocketmine\thread\NonThreadSafeValue;
|
use pocketmine\thread\NonThreadSafeValue;
|
||||||
use function array_key_exists;
|
use function array_key_exists;
|
||||||
use function assert;
|
|
||||||
use function igbinary_serialize;
|
use function igbinary_serialize;
|
||||||
use function igbinary_unserialize;
|
use function igbinary_unserialize;
|
||||||
use function is_null;
|
use function is_null;
|
||||||
@ -83,9 +81,7 @@ abstract class AsyncTask extends Runnable{
|
|||||||
$this->onRun();
|
$this->onRun();
|
||||||
|
|
||||||
$this->finished = true;
|
$this->finished = true;
|
||||||
$worker = NativeThread::getCurrentThread();
|
AsyncWorker::getNotifier()->wakeupSleeper();
|
||||||
assert($worker instanceof AsyncWorker);
|
|
||||||
$worker->getNotifier()->wakeupSleeper();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,7 +36,7 @@ class AsyncWorker extends Worker{
|
|||||||
/** @var mixed[] */
|
/** @var mixed[] */
|
||||||
private static array $store = [];
|
private static array $store = [];
|
||||||
|
|
||||||
private const TLS_KEY_NOTIFIER = self::class . "::notifier";
|
private static ?SleeperNotifier $notifier = null;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private ThreadSafeLogger $logger,
|
private ThreadSafeLogger $logger,
|
||||||
@ -45,12 +45,11 @@ class AsyncWorker extends Worker{
|
|||||||
private SleeperHandlerEntry $sleeperEntry
|
private SleeperHandlerEntry $sleeperEntry
|
||||||
){}
|
){}
|
||||||
|
|
||||||
public function getNotifier() : SleeperNotifier{
|
public static function getNotifier() : SleeperNotifier{
|
||||||
$notifier = $this->getFromThreadStore(self::TLS_KEY_NOTIFIER);
|
if(self::$notifier !== null){
|
||||||
if(!$notifier instanceof SleeperNotifier){
|
return self::$notifier;
|
||||||
throw new AssumptionFailedError("SleeperNotifier not found in thread-local storage");
|
|
||||||
}
|
}
|
||||||
return $notifier;
|
throw new AssumptionFailedError("SleeperNotifier not found in thread-local storage");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function onRun() : void{
|
protected function onRun() : void{
|
||||||
@ -66,7 +65,7 @@ class AsyncWorker extends Worker{
|
|||||||
$this->logger->debug("No memory limit set");
|
$this->logger->debug("No memory limit set");
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->saveToThreadStore(self::TLS_KEY_NOTIFIER, $this->sleeperEntry->createNotifier());
|
self::$notifier = $this->sleeperEntry->createNotifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLogger() : ThreadSafeLogger{
|
public function getLogger() : ThreadSafeLogger{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user