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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

PThread 学习笔记

学习笔记:python3,代码片段(2017)

LIBUV学习笔记 uv_barrier_xxx与pthread_barrier_xxx相关

PHP必用代码片段

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

markdown 链接,片段,提醒,收集点作为重新访问WordPress插件开发期间的笔记#WordPress #Plugin #PHP #Refere