这篇文章主要介绍了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。
 

dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。