标签:
最近在学习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. 一般都是用主线程来控制各个子线程的。
标签:
原文地址:http://www.cnblogs.com/colors-blog/p/5171122.html