PHP pthreads学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP pthreads学习笔记相关的知识,希望对你有一定的参考价值。
最近在学习php pthreads,我把相关的学习笔记整理了下共享给大家。
1. 开启多个线程并发执行。
1 <?php
2 class HelloWorld extends Thread {
3 public function __construct($world) {
4 $this->world = $world;
5 }
6
7 public function run() {
8 print_r(sprintf("Hello %s\n", $this->world));
9 sleep(1);
10 }
11 }
12
13 for ($i=0; $i<10; $i++) {
14 $pool[] = new HelloWorld(‘world‘ . $i);
15 }
16
17 foreach ($pool as $work) {
18 $work->start();
19 }
2. 线程间是不能直接通过数组来交换数据的,因为php数组本身不是线程安全的。可以通过继承Stackable类来实现。具体代码如下:
<?php class HelloWorld extends Thread { private $_data; public function __construct($data) { $this->_data = $data; } public function run() { $this->_data[] = Thread::getCurrentThreadId(); sleep(1); } } class Storage extends Stackable { public function run(){} } $storage = new Storage(); for ($i=0; $i<10; $i++) { $pool[] = new HelloWorld($storage); } foreach ($pool as $work) { $work->start(); } print_r($storage);
写在最后的几点:
1. 一般都是用主线程来控制各个子线程的。
以上是关于PHP pthreads学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
LIBUV学习笔记 uv_barrier_xxx与pthread_barrier_xxx相关
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段
markdown 链接,片段,提醒,收集点作为重新访问WordPress插件开发期间的笔记#WordPress #Plugin #PHP #Refere