<?phpclass workerThread extends Thread { public function __construct($i){ $this->i=$i; } public function run(){ while(true){ echo $this->i; sleep(1); } }}for($i=0;$i<50;$i++){ $workers[$i]=new workerThread($i); $workers[$i]->start();}?>
(PECL pthreads >= 2.0.0)
Когда вызван стартовый метод Thread, код метода run будет запущен в отдельном потоке, параллельно.
После отработки метода run, Thread сразу же завершит работу. Он будет присоединён путём создания Thread в нужное время.
Если полагаться на движок для определения, когда Thread будет присоединён, можно столкнуться с неожиданным поведением. Поэтому необходимо, по возможности, управлять присоединением в явном виде.
<?phpclass workerThread extends Thread { public function __construct($i){ $this->i=$i; } public function run(){ while(true){ echo $this->i; sleep(1); } }}for($i=0;$i<50;$i++){ $workers[$i]=new workerThread($i); $workers[$i]->start();}?>
<?php
# ERROR GLOBAL VARIABLES IMPORT
$tester=true;
function tester(){
global $tester;
var_dump($tester);
}
tester(); // PRINT -> bool(true)
class test extends Thread{
public function run(){
global $tester;
tester(); // PRINT -> NULL
}
}
$workers=new test();
$workers->start();
?>