http://www.php.net/manual/en/threaded.wait.php
Hat wer eine Idee, warum man die Eigenschaft "done" benötigt? Es funktioniert scheinbar auch ohne.
Ergebnis:
Hat wer eine Idee, warum man die Eigenschaft "done" benötigt? Es funktioniert scheinbar auch ohne.
PHP-Code:
<?php
error_reporting(~0);
class My extends Thread
{
//public $done = false;
public function run()
{
/** cause this thread to wait **/
$this->synchronized
(
/**
* Closure
* @param My $thread Die eigene Instanz
*/
function(My $thread) // closure
{
//var_dump('wait 0: '.($this->done ? 'true' : 'false'));
//if(!$thread->done)
//{
var_dump('wait');
$thread->wait(); // in Schlaf versetzen
//}
},
$this
);
}
}
$my = new My();
$my->start();
// Darauf warten, dass der neue Thread auch tatsächlich in den Schlafmodus versetzt wurde:
sleep(1);
/** send notification to the waiting thread **/
$my->synchronized
(
/**
* Closure
* @param My $thread Die eigene Instanz
*/
function(My $thread) // closure
{
var_dump('is waiting 0: '.($thread->isWaiting() ? 'true' : 'false'));
//$thread->done = true;
$thread->notify(); // aus Schlaf erwecken
},
$my
);
var_dump('is waiting 1: '.($my->isWaiting() ? 'true' : 'false'));
var_dump($my->join());
?>
string(4) "wait"
string(1
"is waiting 0: true"
string(19) "is waiting 1: false"
bool(true)
string(1

string(19) "is waiting 1: false"
bool(true)
Kommentar