加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在PHP中使用pthread拓展

发布时间:2022-06-15 03:30:54 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP中使用pthread拓展,本文讲述线程类的使用方法和线程类的概念和使用场景,以及具体的代码实现,以下就是详细内容,需要的朋友可以参考下。 线程的创建和使用 1. Thread类 基本的创建和使用: ?php //通过继承Thread类来实现自己的线程类M
  这篇文章主要介绍了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
  在PHP中使用pthread拓展
       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。
 

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!