basic-multithreading-test.php
useparallelChannel;$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 workingvar_dump("thread$idsleep$sleep");// try to capture globals, but it's not possibleecho'$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= newRuntime();$r2= newRuntime();// channel where the date will be sharead$ch1= newChannel();// 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:$xand$y";
} catch (Error $err) {
echo"nError:",$err->getMessage();
} catch (Exception $e) {
echo"nException:",$e->getMessage();
}