public function testDetectCoreCountCustomDetector() { $loop = Factory::create(); $this->assertSame(128, \WyriHaximus\React\ChildProcess\Pool\detectCoreCount($loop, [Options::DETECTOR => function (LoopInterface $passedLoop) use($loop) { $this->assertSame($passedLoop, $loop); return 128; }])); }
/** * @param string $class * @param LoopInterface $loop * @param array $options * @return PromiseInterface */ public static function createFromClass($class, LoopInterface $loop, array $options = []) { $options = array_merge(self::$defaultOptions, $options); return \WyriHaximus\React\ChildProcess\Pool\detectCoreCount($loop, $options)->then(function ($coreCount) use($class, $loop, $options) { $options[Options::SIZE] = $coreCount; $processes = []; for ($i = 0; $i < $coreCount; $i++) { $processes[] = Resolver::resolve($i, '%s')->then(function ($command) use($class) { return \React\Promise\resolve(new ClassName($class, ['cmdTemplate' => $command])); }); } return \React\Promise\all($processes)->then(function ($processes) use($loop, $options) { return \React\Promise\resolve(new Fixed(new ArrayList($processes), $loop, $options)); }); }); }