画江湖之 PHP 多线程开发 [创建一个新的线程]
代码 看注释 注意需要php 支持pthreads 扩展
<?php
// 继承 Thread 的类具有创建线程的能力
class Request extends Thread
{
public $str;
public $i;
public function __construct($i)
{
$this->i = $i;
}
public function run()//覆盖重写run 方法 执行线程任务
{
if ($this->i == 3) {//如果线程是第三个的时候
sleep(5);//延迟5秒
} else {
sleep(1);
}
$this->str = $this->i;
}
}
$arr = [];
//同时创建3个线程
for ($i = 0; $i <= 3; $i++) {
$request = new Request($i);
$arr[$i] = $request;
// 创建新线程,随后线程会执行 run 方法
if (! $request->start()) {
die("Start thread failed\n");
}
echo "Thread({$i}) started\n";
}
for ($i = 0; $i <= 3; $i++) {
// join 是阻塞的,所以脚本运行时间取决于耗时最长的线程
if (! $arr[$i]->join()) {
die("Join failed\n");
}
echo $arr[$i]->str . PHP_EOL;
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: