note 126457 added to class.parallel-events
| From: | gam6itko at main dot php dot net | Date: | Sat, 25 Sep 2021 19:24:30 +0000 |
| Subject: | note 126457 added to class.parallel-events | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-217002@lists.php.net to get a copy of this message | ||
<?php
// example below shows how to stop child thread from main thread
use parallel\{Channel, Events, Events\Event\Type, Runtime};
$fnThread = static function (Channel $channel) {
$events = new Events();
$events->addChannel($channel);
$events->setBlocking(false); // don't block on Events::poll()
while (true) {
if ($event = $events->poll()) {
//It seems, the target gets deleted after returning an event, so add it again.
$events->addChannel($channel);
if (Type::Read === $event->type) {
echo "- received value: ".$event->value.PHP_EOL;
} elseif (Type::Close === $event->type) {
echo "- receiving close event".PHP_EOL;
return "i'm done";
}
}
echo "-\n";
usleep(500_000);
}
};
// main thread
$runtime = new Runtime();
$channel = new Channel();
$future = $runtime->run($fnThread, [$channel]);
$channel->send('message1');
sleep(2);
$channel->send('message2');
sleep(2);
echo "closing channel\n";
$channel->close();
echo "future said: ".$future->value();
echo PHP_EOL;
----
Server IP: 45.112.84.4
Probable Submitter: 45.112.85.242 (proxied: 176.104.221.149)
----
Manual Page -- https://php.net/manual/en/class.parallel-events.php
Edit -- https://main.php.net/note/edit/126457
Del: integrated -- https://main.php.net/note/delete/126457/integrated
Del: useless -- https://main.php.net/note/delete/126457/useless
Del: bad code -- https://main.php.net/note/delete/126457/bad+code
Del: spam -- https://main.php.net/note/delete/126457/spam
Del: non-english -- https://main.php.net/note/delete/126457/non-english
Del: in docs -- https://main.php.net/note/delete/126457/in+docs
Del: other reasons-- https://main.php.net/note/delete/126457
Reject -- https://main.php.net/note/reject/126457
Search -- https://main.php.net/manage/user-notes.php