mirror of
https://github.com/danog/parallel.git
synced 2024-11-30 04:39:01 +01:00
Update examples
This commit is contained in:
parent
e72a50dc8d
commit
79a4f979f4
@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// The function returned by this script is run by process.php in a separate process.
|
// The function returned by this script is run by process.php in a separate process.
|
||||||
// echo, print, printf, etc. in this script are written to STDERR of the parent.
|
|
||||||
// $argc and $argv are available in this process as any other cli PHP script.
|
// $argc and $argv are available in this process as any other cli PHP script.
|
||||||
|
|
||||||
use Amp\Parallel\Sync\Channel;
|
use Amp\Parallel\Sync\Channel;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// The function returned by this script is run by shared-memory-process.php in a separate process.
|
// The function returned by this script is run by shared-memory-process.php in a separate process.
|
||||||
// echo, print, printf, etc. in this script are written to STDERR of the parent.
|
|
||||||
// $argc and $argv are available in this process as any other cli PHP script.
|
// $argc and $argv are available in this process as any other cli PHP script.
|
||||||
|
|
||||||
use Amp\Delayed;
|
use Amp\Delayed;
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
<?php
|
<?php
|
||||||
require \dirname(__DIR__).'/vendor/autoload.php';
|
require \dirname(__DIR__).'/vendor/autoload.php';
|
||||||
|
|
||||||
|
use Amp\ByteStream;
|
||||||
use Amp\Delayed;
|
use Amp\Delayed;
|
||||||
use Amp\Loop;
|
use Amp\Loop;
|
||||||
use Amp\Parallel\Context\Process;
|
use Amp\Parallel\Context\Process;
|
||||||
@ -19,6 +20,9 @@ Loop::run(function () {
|
|||||||
|
|
||||||
\assert($context instanceof Process);
|
\assert($context instanceof Process);
|
||||||
|
|
||||||
|
// Pipe any data written to the STDOUT in the child process to STDOUT of this process.
|
||||||
|
Amp\Promise\rethrow(ByteStream\pipe($context->getStdout(), new ByteStream\ResourceOutputStream(STDOUT)));
|
||||||
|
|
||||||
print "Waiting 2 seconds to send start data...\n";
|
print "Waiting 2 seconds to send start data...\n";
|
||||||
yield new Delayed(2000);
|
yield new Delayed(2000);
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
<?php
|
<?php
|
||||||
require \dirname(__DIR__).'/vendor/autoload.php';
|
require \dirname(__DIR__).'/vendor/autoload.php';
|
||||||
|
|
||||||
|
use Amp\ByteStream;
|
||||||
use Amp\Delayed;
|
use Amp\Delayed;
|
||||||
use Amp\Loop;
|
use Amp\Loop;
|
||||||
use Amp\Parallel\Context\Process;
|
use Amp\Parallel\Context\Process;
|
||||||
@ -11,11 +12,16 @@ Loop::run(function () {
|
|||||||
// Create a parcel that then can be accessed in any number of child processes.
|
// Create a parcel that then can be accessed in any number of child processes.
|
||||||
$parcel = SharedMemoryParcel::create($id = \bin2hex(\random_bytes(10)), 1);
|
$parcel = SharedMemoryParcel::create($id = \bin2hex(\random_bytes(10)), 1);
|
||||||
|
|
||||||
$context = Process::run([
|
$context = yield Process::run([
|
||||||
__DIR__ . "/parcel-process.php",
|
__DIR__ . "/parcel-process.php",
|
||||||
$id, // Send parcel ID to child process as command argument.
|
$id, // Send parcel ID to child process as command argument.
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
\assert($context instanceof Process);
|
||||||
|
|
||||||
|
// Pipe any data written to the STDOUT in the child process to STDOUT of this process.
|
||||||
|
Amp\Promise\rethrow(ByteStream\pipe($context->getStdout(), new ByteStream\ResourceOutputStream(STDOUT)));
|
||||||
|
|
||||||
yield new Delayed(100); // Give the process time to start and access the parcel.
|
yield new Delayed(100); // Give the process time to start and access the parcel.
|
||||||
|
|
||||||
yield $parcel->synchronized(function (int $value) {
|
yield $parcel->synchronized(function (int $value) {
|
||||||
|
@ -16,7 +16,7 @@ Loop::run(function () {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// Create a new child thread that does some blocking stuff.
|
// Create a new child thread that does some blocking stuff.
|
||||||
$context = Thread::run(function (Channel $channel): \Generator {
|
$context = yield Thread::run(function (Channel $channel): \Generator {
|
||||||
\printf("Received the following from parent: %s\n", yield $channel->receive());
|
\printf("Received the following from parent: %s\n", yield $channel->receive());
|
||||||
|
|
||||||
print "Sleeping for 3 seconds...\n";
|
print "Sleeping for 3 seconds...\n";
|
||||||
@ -30,6 +30,8 @@ Loop::run(function () {
|
|||||||
return 42;
|
return 42;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
\assert($context instanceof Thread);
|
||||||
|
|
||||||
print "Waiting 2 seconds to send start data...\n";
|
print "Waiting 2 seconds to send start data...\n";
|
||||||
yield new Delayed(2000);
|
yield new Delayed(2000);
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ use Amp\Parallel\Sync\ThreadedParcel;
|
|||||||
Loop::run(function () {
|
Loop::run(function () {
|
||||||
$parcel = new ThreadedParcel(1);
|
$parcel = new ThreadedParcel(1);
|
||||||
|
|
||||||
$context = Thread::run(function (Channel $channel, Parcel $parcel) {
|
$context = yield Thread::run(function (Channel $channel, Parcel $parcel) {
|
||||||
$value = yield $parcel->synchronized(function (int $value) {
|
$value = yield $parcel->synchronized(function (int $value) {
|
||||||
return $value + 1;
|
return $value + 1;
|
||||||
});
|
});
|
||||||
@ -29,6 +29,8 @@ Loop::run(function () {
|
|||||||
});
|
});
|
||||||
}, $parcel);
|
}, $parcel);
|
||||||
|
|
||||||
|
\assert($context instanceof Thread);
|
||||||
|
|
||||||
yield new Delayed(100); // Give the thread time to start and access the parcel.
|
yield new Delayed(100); // Give the thread time to start and access the parcel.
|
||||||
|
|
||||||
yield $parcel->synchronized(function (int $value) {
|
yield $parcel->synchronized(function (int $value) {
|
||||||
|
Loading…
Reference in New Issue
Block a user