Skip to content

2.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Feb 20:06
c7e5e78

Fully reworked the public facing API to utilize fibers:

From:

<?php


use PackageVersions\Versions;
use React�ventLoop\Factory;
use ReactParallel\Factory as ParallelFactory;
use ReactParallel\ObjectProxy\Generated\Proxies\WyriHaximus\Metrics\Registry as RegistryProxy;
use WyriHaximus\Metrics\Label;
use function React\Promise�ll;
use WyriHaximus\React\Parallel\Finite;
use function WyriHaximus\iteratorOrArrayToArray;
use WyriHaximus\React\Parallel\ReturnThread;
use WyriHaximus\React\Parallel\FiniteWorker;

$options = getopt(
    '',
    [
        'iterations:',
        'delay::',
    ],
);

require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';

$loop = Factory::create();
echo 'Loop: ', get_class($loop), PHP_EOL;

$parallelFactory = new ParallelFactory($loop);
$pool = $parallelFactory->lowLevelPool();

$loop->futureTick(static function () use ($pool, $options): void {
    foreach (range(0, 7) as $i) {
        $pool->run(static function (int $index, int $iterations, bool $delay): int {
            for ($i = 0; $i < $iterations; $i++) {
                if ($delay) {
                    usleep($i * 3.3);
                }
                echo "�[" . (30 + $index) . ";" . (40 + $index) . "m.�[0m";
            }
            return true;
        }, [$i, (int)$options['iterations'], isset($options['delay'])]);
    }
});

echo PHP_EOL, 'Loop::run()', PHP_EOL;
$loop->run();
echo PHP_EOL, 'Loop::done()', PHP_EOL;

To:

<?php

declare(strict_types=1);

use React�ventLoop\Loop;
use ReactParallel\Factory as ParallelFactory;
use function React\Async�sync;

$options = getopt(
    '',
    [
        'iterations:',
        'delay::',
    ],
);

require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';

echo 'Loop: ', Loop::get()::class, PHP_EOL;

$parallelFactory = new ParallelFactory();
$pool = $parallelFactory->lowLevelPool();

foreach (range(0, 7) as $i) {
    Loop::futureTick(async(static function () use ($i, $pool, $options): void {
        $pool->run(static function (int $index, int $iterations, bool $delay): bool {
            for ($i = 0; $i < $iterations; $i++) {
                if ($delay) {
                    usleep((int) ($i * 0.3));
                }
                echo "�[" . (30 + $index) . ";" . (40 + $index) . "m.�[0m";
            }
            return true;
        }, [$i, (int)$options['iterations'], isset($options['delay'])]);
    }));
}

echo PHP_EOL, 'Loop::run()', PHP_EOL;

2.0.0

  • Total issues resolved: 0
  • Total pull requests resolved: 28
  • Total contributors: 3

Dependencies 📦,Feature 🏗

Dependencies 📦,Enhancement ✨

Dependencies 📦

Enhancement ✨