note 124434 added to class.parallel-runtime

From: Date: Mon, 25 Nov 2019 20:27:50 +0000
Subject: note 124434 added to class.parallel-runtime
Groups: php.notes 
Request: Send a blank email to php-notes+get-213252@lists.php.net to get a copy of this message
basic-multithreading-test.php <?php use parallel\Runtime; use parallel\Channel; $test = "this var is not accesible in a thread"; // this function will be the threads $thread_function = function (int $id, Channel $ch) { // delay the first thread to simulate better multithreading // second thread always finishes first $sleep = ($id == 2) ? 1 : 2; sleep($sleep); // print thread id // so it's clear second thread goes first // and also you can make sure multithreading is working var_dump("thread $id sleep $sleep"); // try to capture globals, but it's not possible echo '$GLOBALS["test"] = '; @var_dump($GLOBALS["test"]); // the only way to share data is between channels $ch->send($sleep); }; try { // each runtime represents a thread $r1 = new Runtime(); $r2 = new Runtime(); // channel where the date will be sharead $ch1 = new Channel(); // args that will be sent to $thread_function $args = array(); $args[0] = null; $args[1] = $ch1; // running thread 1 $args[0] = 1; $r1->run($thread_function, $args); // running thread 2 $args[0] = 2; $r2->run($thread_function, $args); // receive data from channel $x = $ch1->recv(); $y = $ch1->recv(); // close channel $ch1->close(); echo "\nData received by the channel: $x and $y"; } catch (Error $err) { echo "\nError:", $err->getMessage(); } catch (Exception $e) { echo "\nException:", $e->getMessage(); } ---- Server IP: 208.43.231.9 Probable Submitter: 82.199.157.54 (proxied: 2804:14d:9e86:7eb:25eb:9e2a:e3d5:4620) ---- Manual Page -- http://php.net/manual/en/class.parallel-runtime.php Edit -- https://master.php.net/note/edit/124434 Del: integrated -- https://master.php.net/note/delete/124434/integrated Del: useless -- https://master.php.net/note/delete/124434/useless Del: bad code -- https://master.php.net/note/delete/124434/bad+code Del: spam -- https://master.php.net/note/delete/124434/spam Del: non-english -- https://master.php.net/note/delete/124434/non-english Del: in docs -- https://master.php.net/note/delete/124434/in+docs Del: other reasons-- https://master.php.net/note/delete/124434 Reject -- https://master.php.net/note/reject/124434 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#213252) next »