php有线程吗?----有,但是需要扩展pthreads,扩展方式网上有一堆的教程,这是只做线程demo。

file_put_contents(dirname(__FILE__).'/1.txt', '1111', FILE_APPEND);
class test extends Thread {
public function __construct($arg){
$this->arg = $arg;
}
public function run(){
file_put_contents(dirname(__FILE__).'/1.txt', '3333', FILE_APPEND);
$getCreatorId = $this->getCreatorId();//创建当前线程的线程ID
$getCurrentThreadId = Thread::getCurrentThreadId();//当前执行线程的ID
$getThreadId = $this->getThreadId();//引用线程的ID
if($this->arg){
if ($this->arg=='World'){
sleep(3);
}
echo "Hello".$this->arg.'<br />
getCreatorId:'.$getCreatorId.'创建当前线程的线程ID<br />
getCurrentThreadId:'.$getCurrentThreadId.'当前执行线程的ID<br />
getThreadId:'.$getThreadId.'引用线程的ID<br />';
}
}
}
$thread = new test("World");
$thread->start();
$thread->join();
// var_dump($thread->isJoined()); // $thread2 = new test("World2");
// $thread2->start();
// $thread2->join();
file_put_contents(dirname(__FILE__).'/1.txt', '2222', FILE_APPEND);

1.txt中保存的内容为:111133332222,若屏蔽$thread->join(),则1.txt的内容为111122223333。

解析:整个程序的执行为主线程, $thread->start()的时候会自动执行Thread类的的run()方法,为子线程,子线程会在主线程执行完毕后执行(异步/非阻塞),若加上$thread->join(),则$thread->start()的时候会立即执行子线程,会影响主线程的后续执行(同步/阻塞)

最新文章

  1. 手机web如何实现多平台分享
  2. linux系统目录结构与层级命令使用
  3. 天猫装修-全屏代码,和去掉10px
  4. python递归小疑惑
  5. 怎么安装phpcms?PHPCMS V9安装图文教程
  6. jmeter随笔(23)--在csv中维护变量参数
  7. 如何写一个漂亮的Liferay Theme 6.2
  8. OC之category的用法
  9. range,shuffle,str_shuffle
  10. HTML特殊转义字符对照表
  11. sql 截取两个字符串之间的字符
  12. PhpStrom如何安装主题?(总结三种不同格式安装方法)
  13. Xcode 7 你能不能再抗扎腾点儿呢 - 尤其自个儿强制升级后,没事儿就关闭
  14. (转)为Xcode添加删除行、复制行快捷键
  15. windows下使用hbase/opencv/ffmpeg小记
  16. vue.js 自带阻止默认事件 阻止冒泡
  17. Linux中安装Oracle11g后出现监听的问题及解决办法
  18. H5拖动火狐自动打开新标签
  19. FFmpeg数据结构AVPacket
  20. count 【mysql】

热门文章

  1. Java-帮助文档的制作
  2. zabbix api创建screen vsize限制解决
  3. 将Latex tex文档转换成 word文档(下)
  4. JSON-Schema 最科学的表单验证模式
  5. poj 3537 Crosses and Crosses 博弈论之grundy值
  6. MySQL二:数据库操作
  7. Ubuntu 16.04.5下FFmpeg编译与开发环境搭建
  8. nginx做反向代理proxy_pass,proxy_redirect的使用
  9. NYOJ 492 King (状态压缩)
  10. X264使用指南