这篇文章主要介绍了PHP中使用pthread拓展,本文讲述线程类的使用方法和线程类的概念和使用场景,以及具体的代码实现,以下就是详细内容,需要的朋友可以参考下。
线程的创建和使用
1. Thread类
基本的创建和使用:
<?php
//通过继承Thread类来实现自己的线程类MyThread
class MyThread extends Thread{
//重写构造函数
function __construct(){
}
//重写run方法(运行的是子线程需要执行的任务)
function run(){
}
}
//对象的实例化和运行就和java一样
$mt = new MyThread();
$mt->start();
当然,作为线程类,必须还有另外一些用于查询线程状态以及管理线程的方法:
<?php
//获取创建线程的父线程id
Thread::getCreatorId
//获取当前线程id
Thread::getCurrentThreadId
//获取当前线程引用
Thread::getCurrentThread
//将线程加入检测
Thread::join
//查看线程是否被检测(是否被join)
Thread::isJoined
//强行杀死线程
Thread::kill
2.Worker类
Worker类的父类是Thread类,因此基本用法和Thread一样,而Worker类相对于Thread类来说,增加了线程复用的功能(以降低创建销毁线程所耗费的资源),通常与Stackable类连用,也就是说worker类既可以当做线程使用,也可以当做任务的容器来使用,如:
最终输出:
task1:run
task2:run
task3:run
当然Worker类还有其他一些方法来用于父线程对其进行管理。
//获取还没执行的任务数量
Worker::getStacked
//判断worker是否关闭
Worker::isShutdown
//判断worker是否在工作
Worker::isWorking
//关闭销毁worker
Worker::shutdown
//将任务压栈
Worker::stack
//将任务出栈(该api有问题,慎用)
Worker::unstack。