php Pthread 多线程 (二) Worker和Threaded

<?php
//Worker是具有持久化上下文(执行环境)的线程对象
//Worker对象start()后,会执行run()方法,run()方法执行完毕,线程也不会消亡
class MySqlWorker extends Worker {private $name = '';private $db = null;public function __construct($name) {$this->name = $name;}public function run() {$this->db = mysql_connect('127.0.0.1', 'root', '');mysql_select_db('test', $this->db);}public function getDb() {return $this->db;}
}//Stackable是Threaded的一个别称,直到pthreads v.2.0.0
class Query extends Threaded {private $sql = '';private $data = array();public function __construct($sql) {$this->sql = $sql;}public function run() {//访问线程工作对象$db = $this->worker->getDb();$res = mysql_query($this->sql, $db);$tmp = array();while($row = mysql_fetch_assoc($res)) {//这里不能使用$this->data[] = $row;这种方式。$tmp[] = $row;}$this->data = $tmp;}public function getData() {return $this->data;}
}$mysqlWork = new MySqlWorker('mysqlWork');
$query1 = new Query('select * from test order by id limit 0,2');
$query2 = new Query('select * from test order by id limit 2,2');//通过Worker的stack方法,我们把对象加入到Worker中
//会激活Worker执行对象的run()方法。
//说白了就是会执行$query1,$query2的run()方法。
$mysqlWork->stack($query1);
$mysqlWork->stack($query2);$mysqlWork->start();
//执行完Worker中的对象后,关闭Worker。
//如果把这段代码放到$query1->getData()和$query2->getData()之后
//则会输出两个空数组,那该方法的作用有可能是等待Worker中对象执行完毕,类似join方法()。
$mysqlWork->shutdown();var_dump($query1->getData());
var_dump($query2->getData());
php Thread 多线程 Worker和Threaded - 怀素真 - 因上努力 果上随缘
 
Worker对象与Threaded对象的关系有点像是,船在河中运行,一条河里有很多条船,而河也不止一条。不同的船运行在特定的环境下,比如大吨位的船是无法运行在河床浅的河中。船是可以随时变化的,而河的环境确相对持久。我们通过stack方法把对象加入到Worker中,在对象的run方法中通过对worker的访问来获取信息。

转载于:https://www.cnblogs.com/jkko123/p/6294596.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios yymodel 将字典转数组模型_TensorNet——基于TensorFlow的大规模稀疏特征模型分布式训练框架

TensorNet是什么&#xff1f;TensorNet是一个构建在TensorFlow之上针对广告推荐等大规模稀疏场景优化的分布式训练框架。TensorNet的目标是让所有使用TensorFlow的开发者可以快速的、方便的训练出稀疏参数超过百亿的超大模型。训练带有大规模稀疏特征模型的主要挑战在广告、搜索…

mysql 索引及索引创建原则

是什么 索引用于快速的查询某些特殊列的某些行。如果没有索引&#xff0c; MySQL 必须从第一行开始&#xff0c;然后通过搜索整个表来查询有关的行。表越大&#xff0c;查询的成本越大。如果表有了索引的话&#xff0c;那么 MySQL 可以很快的确定数据的位置&#xff0c;而不用查…

php文件怎么制定编码格式,php文件编码格式对结果有影响

最近弄个小网站&#xff0c;发现windows下的文件上传到linux服务器上后&#xff0c;出现了标签错乱的问题。比如&#xff0c;我的代码是&#xff1a;print testtest;但是&#xff0c;浏览器的解析格式缺成了下面的样子:testtest进过不停地搜索&#xff0c;发现了问题所在&#…

【链表】Add Two Numbers

题目&#xff1a; You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. Input: (2 -> 4 -> 3) (5…

我们为何要使用多线程,它有什么优点?

其实在平时的开发中&#xff0c;很多程序员都不会去写线程&#xff0c;为啥&#xff1f;因为麻烦&#xff0c;其次是用到的地方并不多&#xff0c;除非逼不得已&#xff0c;大家都不会去写&#xff0c;毕竟写一天代码&#xff0c;拿一天工资&#xff0c;是吧&#xff1f; 麻烦归…

ecs服务器数据迁移_如何非常方便地从Windows文件服务器把数据完整地迁移到ONTAP Select...

这是一个续篇&#xff0c;如果你依然爱你的Windows文件服务器或者使用Windows文件服务没有任何问题的话&#xff0c;请忽略我。续自&#xff1a;从Windows文件服务器&#xff0c;到ONTAP Select软件定义存储感谢联想凌拓合作伙伴新锐英诚的帮助&#xff0c;我们成功地做到了从海…

yum第三方安装-软件包没签名及更新错误

yum安装时 后面加 --nogpgcheck 阿里云源文件&#xff1a;http://mirrors.aliyun.com/repo/Centos-7.repo epel repo源&#xff1a;http://mirrors.aliyun.com/repo/epel-7.repo yum update 错误提示 Error: initscripts conflicts with centos-release-7-4.1708.el7.centos.x8…

oracle触发和存储过程,Oracle存储过程与触发器

Oracle存储过程与触发器存储过程存储过程最直接的理解&#xff1a;就是保存了批量的sql(select,insert,if for)&#xff0c;以后可以通过一个名字把这些批量的sql执行&#xff0c;使用存储过程在大批量数据查询或计算时会带来高性能&#xff0c;存储过程编写和调试比较复杂&…

(hdu 简单题 128道)平方和与立方和(求一个区间的立方和和平方和)

题目&#xff1a;平方和与立方和Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 108212 Accepted Submission(s): 34915Problem Description给定一段连续的整数。求出他们中全部偶数的平方和以及全部奇数的立方…

企业高可用切换的说明

企业的应用场景&#xff0c;基本上都离不开高可用&#xff0c;不管是windows下自带的集群软件&#xff0c;或者是Linux下的heartbeat&#xff0c;keepalived等&#xff0c;AIX下的hacmp等。-----------------------------引用老男孩老师对高可用切换的说明--------------------…

swift int转string_Swift集合类型协议浅析(下)

关注【搜狐技术产品】公众号&#xff0c;第一时间获取技术干货导读本篇是Swift集合类型协议浅析系列文章的下篇&#xff0c;在这篇文章中&#xff0c;我们将继续围绕集合类型协议展开讨论&#xff0c;侧重点更多地关注于String相关的周边协议。StringProtocol代表一个字符串&am…

50 jQuery绑定事件 阻止默认事件发生 内置动画 each data

主要内容 1 阻止后续事件继续执行 return false: 常用于表单提交 event.preventDefault : 阻止默认事件发生 <body> <form action""><input type"text" id"t1"><input type"submit" class"s1" id&qu…

oracle视图执行脚本,Sh脚本中查询Oracle v$视图时需要在$号前加转义符“\”

DBA经常会部署一些sh脚本登陆Oracle数据库查询v$动态视图得到一些东西来实际管理自动化的目的&#xff0c;但在sh脚本中写ORACLE SQL语句时&#xff0c;如果语句查询v$视图&#xff0c;直接写v$XXXX是不能成功的&#xff0c;shell会将$当成一个参数来处理。以下面一段简单的sh脚…

Linux下实现视频读取(二)---camera參数设定

Camera的可设置项极多&#xff0c;V4L2 支持了不少。但Sam之前对这些设置的使用方法和涵义都是在看videodev2.h中边看边理解。感觉很生涩。直到写这篇blog时&#xff0c;才发现v4l2有专门的SPEC来说明&#xff1a; http://www.linuxtv.org/downloads/legacy/video4linux/API/V4…

微信小程序页面跳转与返回并回传数据

2019独角兽企业重金招聘Python工程师标准>>> A页面&#xff1a; .wxml文件 <view class"flex-wrp"><text style"width: 32%;">选择城市</text><input style"width: 68%;" type"text" bindtap"ci…

地址栏 输入 参数 刷新参数丢失_小米11 Pro屏幕参数曝光:2K屏幕+120Hz刷新率

本周一&#xff0c;高通已经宣布将于12月初举行的骁龙技术峰会上正式发布新一代旗舰处理器——骁龙875。根据此前的曝光消息&#xff0c;小米11系列将首发搭载这颗芯片&#xff0c;网上也已经开始对这款新机进行曝光。日前&#xff0c;海外知名论坛XDA在MIUI 12的代码中发现了一…

Cypress EZ-USB FX3 DMA模式下的串口通讯

由于公司设备升级后出了问题&#xff0c;需要对USB驱动进行修改&#xff0c;原本使用的是寄存器模式进行UART传输&#xff0c;但是由于FX3寄存器模式会出现长时间延时等待的问题&#xff0c;不得不对其传输模式进行修改。虽然赛普拉斯的EZ-USB FX3系列芯片功能强大&#xff0c;…

php如何写一个能让外部访问的接口,如何写一个接口供外界访问

在工作的时候经常调用别人的接口&#xff0c;获取数据&#xff0c;然后就想知道这中间的原理是什么呢&#xff1f;今天上一个自己写的一个测试例子&#xff1a;首先是自己远程写好的一个接口&#xff1a;public function testming(){$arrarray(first > 1,hospitalname > …

win10远程桌面连接

有的情况下&#xff0c;Win10设置了允许远程桌面连接后&#xff0c;远程主机仍然不能桌面连接到目标主机上&#xff0c;这时可以在目标主机上尝试如下修改&#xff1a; 开始-->运行->gpedit.msc->计算机配置->Windows设置->安全设置->本地策略->安全选项-…

10494,没过,待解决,大数除法

10494,没过,待解决,大数除法 import java.io.*; import java.util.*;public class Main {public static void main(String[] args) throws FileNotFoundException{// Scanner scanner new Scanner(new File("d://1.txt"));Scanner scanner new Scanner(System.in);…