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

首頁(yè) > 編程 > PHP > 正文

PHP多線程編程之管道通信實(shí)例分析

2020-03-24 18:56:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
本文實(shí)例講述了PHP多線程編程之管道通信用法。分享給大家供大家參考。具體分析如下:一個(gè)線程如果是個(gè)人英雄主義,那么多線程就是集體主義,你不再是一個(gè)獨(dú)行俠,而是一個(gè)指揮家。
管道通信:
1. 管道可以認(rèn)為是一個(gè)隊(duì)列,不同的線程都可以往里面寫東西,也都可以從里面讀東西。寫就是
在隊(duì)列末尾添加,讀就是在隊(duì)頭刪除。

2. 管道一般有大小,默認(rèn)一般是4K,也就是內(nèi)容超過(guò)4K了,你就只能讀,不能往里面寫了。

3. 默認(rèn)情況下,管道寫入以后,就會(huì)被阻止,直到讀取他的程序讀取把數(shù)據(jù)讀完。而讀取線程也會(huì)被阻止,
直到有進(jìn)程向管道寫入數(shù)據(jù)。當(dāng)然,你可以改變這樣的默認(rèn)屬性,用stream_set_block 函數(shù),設(shè)置成非阻斷模式。

下面是我分裝的一個(gè)管道的類(這個(gè)類命名有問(wèn)題,沒(méi)有統(tǒng)一,沒(méi)有時(shí)間改成統(tǒng)一的了,我一般先寫測(cè)試代碼,最后分裝,所以命名上可能不統(tǒng)一):
html' target='_blank'>class Pipe public $fifoPath; private $w_pipe; private $r_pipe; * 自動(dòng)創(chuàng)建一個(gè)管道 * @param string $name 管道名字 * @param int $mode 管道的權(quán)限,默認(rèn)任何用戶組可以讀寫 function __construct($name = 'pipe', $mode = 0666) $fifoPath = "/tmp/$name." . posix_getpid(); if (!file_exists($fifoPath)) { if (!posix_mkfifo($fifoPath, $mode)) { error("create new pipe ($name) error."); return false; } else { error( "pipe ($name) has exit."); return false; $this- fifoPath = $fifoPath;///////////////////////////////////////////////////// 寫管道函數(shù)開始/////////////////////////////////////////////////// function open_write() $this- w_pipe = fopen($this- fifoPath, 'w'); if ($this- w_pipe == NULL) { error("open pipe {$this- fifoPath} for write error."); return false; return true; function write($data) return fwrite($this- w_pipe, $data); function write_all($data) $w_pipe = fopen($this- fifoPath, 'w'); fwrite($w_pipe, $data); fclose($w_pipe); function close_write() return fclose($this- w_pipe);//////////////////////////////////////////////////////////// 讀管道相關(guān)函數(shù)開始//////////////////////////////////////////////////////// function open_read() $this- r_pipe = fopen($this- fifoPath, 'r'); if ($this- r_pipe == NULL) { error("open pipe {$this- fifoPath} for read error."); return false; return true; function read($byte = 1024) return fread($this- r_pipe, $byte); function read_all() $r_pipe = fopen($this- fifoPath, 'r'); $data = ''; while (!feof($r_pipe)) { //echo "read one K/n"; $data .= fread($r_pipe, 1024); fclose($r_pipe); return $data; function close_read() return fclose($this- r_pipe); * 刪除管道 * @return boolean is success function rm_pipe() return unlink($this- fifoPath);有了這個(gè)類,就可以實(shí)現(xiàn)簡(jiǎn)單的管道通信了。*/希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜都市| 兴国县| 芜湖县| 永福县| 古交市| 阜新| 白朗县| 吴忠市| 搜索| 和林格尔县| 唐河县| 叶城县| 洮南市| 平潭县| 金湖县| 柳林县| 佛教| 崇阳县| 河曲县| 鄄城县| 肃南| 铜陵市| 石泉县| 温泉县| 中阳县| 永康市| 临安市| 响水县| 德安县| 福鼎市| 当阳市| 柏乡县| 礼泉县| 潜江市| 浦江县| 神农架林区| 连南| 乌拉特后旗| 青川县| 车致| 六枝特区|