国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

PHP使用Pthread實現的多線程操作實例

2024-04-25 20:43:21
字體:
來源:轉載
供稿:網友

本文實例講述了PHP使用Pthread實現的多線程操作。分享給大家供大家參考,具體如下:

<?php

class vote extends Thread {

public $res = '';

public $url = array();

public $name = '';

public $runing = false;

public $lc = false;

public function __construct($name) {

$this->res = '暫無,第一次運行.';

$this->param = 0;

$this->lurl = 0;

$this->name = $name;

$this->runing = true;

$this->lc = false;

}

public function run() {

while ($this->runing) {

if ($this->param != 0) {

$nt = rand(1, 10);

echo "線程[{$this->name}]收到任務參數::{$this->param},需要{$nt}秒處理數據./n";

$this->res = rand(100, 999);

sleep($nt);

$this->lurl = $this->param;

$this->param = '';

} else {

echo "線程[{$this->name}]等待任務../n";

}

sleep(1);

}

}

}

//這里創建線程池.

$pool[] = new vote('a');

$pool[] = new vote('b');

$pool[] = new vote('c');

//啟動所有線程,使其處于工作狀態

foreach ($pool as $w) {

$w->start();

}

//派發任務給線程

for ($i = 1; $i < 10; $i++) {

$worker_content = rand(10, 99);

while (true) {

foreach ($pool as $worker) {

//參數為空則說明線程空閑

if ($worker->param=='') {

$worker->param = $worker_content;

echo "[{$worker->name}]線程空閑,放入參數{$worker_content},上次參數[{$worker->lurl}]結果[{$worker->res}]./n";

break 2;

}

}

sleep(1);

}

}

echo "所有線程派發完畢,等待執行完成./n";

//等待所有線程運行結束

while (count($pool)) {

//遍歷檢查線程組運行結束

foreach ($pool as $key => $threads) {

if ($worker->param=='') {

echo "[{$threads->name}]線程空閑,上次參數[{$threads->lurl}]結果[{$threads->res}]./n";

echo "[{$threads->name}]線程運行完成,退出./n";

//設置結束標志

$threads->runing = false;

unset($pool[$key]);

}

}

echo "等待中.../n";

sleep(1);

}

echo "所有線程執行完畢./n";

希望本文所述對大家php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉荫县| 青田县| 安溪县| 远安县| 博客| 屏山县| 惠水县| 汝州市| 聂荣县| 肇东市| 墨玉县| 兴化市| 东明县| 酒泉市| 珲春市| 马公市| 绵阳市| 绥芬河市| 利川市| 宁波市| 徐汇区| 泾源县| 马边| 广南县| 海丰县| 安吉县| 乌兰县| 开封市| 仁怀市| 尤溪县| 宁远县| 甘南县| 中牟县| 德惠市| 宁武县| 陆良县| 湛江市| 额敏县| 长兴县| 洪泽县| 讷河市|