|
@@ -12,28 +12,12 @@ if(!class_exists('Thread')) {
|
|
|
|
|
|
class Workhorse extends Thread
|
|
class Workhorse extends Thread
|
|
{
|
|
{
|
|
- protected $val;
|
|
|
|
-
|
|
|
|
- public function __construct($val)
|
|
|
|
- {
|
|
|
|
- $this->val = $val;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public function run()
|
|
public function run()
|
|
{
|
|
{
|
|
$v8 = new V8Js();
|
|
$v8 = new V8Js();
|
|
- $v8->val = $this->val;
|
|
|
|
- $v8->sync_var_dump = function($value) {
|
|
|
|
- $this->synchronized(function($thread) use ($value) {
|
|
|
|
- while(!$thread->readyToPrint) {
|
|
|
|
- $thread->wait();
|
|
|
|
- }
|
|
|
|
- var_dump($value);
|
|
|
|
- $thread->notify();
|
|
|
|
- }, $this);
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- $v8->executeString('PHP.sync_var_dump(PHP.val);');
|
|
|
|
|
|
+ if($v8->executeString('(11 + 12)') != 23) {
|
|
|
|
+ throw new \Exception('fail');
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -43,23 +27,9 @@ $bar = new Workhorse('bar');
|
|
$foo->start();
|
|
$foo->start();
|
|
$bar->start();
|
|
$bar->start();
|
|
|
|
|
|
-$bar->synchronized(function($thread) {
|
|
|
|
- $thread->readyToPrint = true;
|
|
|
|
- $thread->notify();
|
|
|
|
- $thread->wait();
|
|
|
|
-}, $bar);
|
|
|
|
-
|
|
|
|
-$foo->synchronized(function($thread) {
|
|
|
|
- $thread->readyToPrint = true;
|
|
|
|
- $thread->notify();
|
|
|
|
- $thread->wait();
|
|
|
|
-}, $foo);
|
|
|
|
-
|
|
|
|
$foo->join();
|
|
$foo->join();
|
|
$bar->join();
|
|
$bar->join();
|
|
?>
|
|
?>
|
|
===EOF===
|
|
===EOF===
|
|
--EXPECT--
|
|
--EXPECT--
|
|
-string(3) "bar"
|
|
|
|
-string(3) "foo"
|
|
|
|
-===EOF===
|
|
|
|
|
|
+===EOF===
|