Implemented Threaded ClassLoader, improves class loading while on different threads (no need to synchronize states)

This commit is contained in:
Shoghi Cervantes
2015-03-14 15:22:13 +01:00
parent 284958a21e
commit 11c13cd666
11 changed files with 31 additions and 54 deletions

View File

@ -25,20 +25,22 @@ use pocketmine\Worker;
class AsyncWorker extends Worker{
public $loader;
public function __construct(\ClassLoader $loader){
$this->loader = $loader;
}
public function run(){
if(!interface_exists("ClassLoader", false)){
require(\pocketmine\PATH . "src/spl/ClassLoader.php");
}
if(!class_exists("BaseClassLoader", false)){
require(\pocketmine\PATH . "src/spl/BaseClassLoader.php");
require(\pocketmine\PATH . "src/pocketmine/CompatibleClassLoader.php");
}
$autoloader = new \BaseClassLoader();
$autoloader->addPath(\pocketmine\PATH . "src");
$autoloader->addPath(\pocketmine\PATH . "src" . DIRECTORY_SEPARATOR . "spl");
$autoloader->register(true);
$this->loader->register(true);
}
public function start($options = PTHREADS_INHERIT_NONE){
parent::start(PTHREADS_INHERIT_CONSTANTS | PTHREADS_INHERIT_FUNCTIONS);
}
}
}