Swoole高階 04 程序(訊息佇列通訊)

2021-09-10 22:37:34 字數 1915 閱讀 2142

// 普通形式

$process

=new

swoole_process

('callback_function'

,false

,false);

// oop形式

swoole_process:

:__construct

(callable $function

,$redirect_stdin_stdout

=false

,$create_pipe

=false);

// 啟用命名空間

swoole\process::

__construct

(callable $function

,$redirect_stdin_stdout

=false

,$create_pipe

=false

)

這裡需要注意的是,第

二、第三個引數要填false或者0,不啟用管道。

swoole_process-

>

usequeue

(int $msgkey=0

, int $mode=2

);

usequeue方法接受2個可選引數。

如果建立訊息佇列失敗,會返回false。可使用swoole_strerror(swoole_errno()) 得到錯誤碼和錯誤資訊。

使用模式2後,建立的子程序無法進行單獨通訊,比如發給特定子程序。

$process物件並未執行start,也可以執行push/pop向佇列推送/提取資料

非阻塞模式

$process

->

usequeue

($key

,$mode

| swoole_process:

:ipc_nowait

);

在非阻塞模式下,佇列已滿呼叫push方法、佇列已空調用pop方法時將不再阻塞立即返回。

function swoole_process-

>

start

()

process-

>

push

(string $data

);

string process-

>

pop(int $maxsize

=8192

);

process-

>

exit

(int $status=0

);

子程序退出後,在父程序中執行process::wait可以得到子程序退出的事件和狀態碼。

// 1.定義子程序物件陣列

$workers=[

];// 2.最大程序數

$workers_num=2

;// 3.批量建立子程序

for($i=

0;$i<

$workers_num;$i

++)// 子程序執行函式

function

doprocess

(swoole_process $process

)// 主程序向 子程序新增資料

foreach

($workers

as$pid

=>

$process

)// 等待子程序結束,**資源

for($i=

0;$i<

$workers_num;$i

++)

程序04 訊息佇列

建立訊息佇列 1.建立ipc的通訊物件的key 金鑰 ftok include include key t ftok const char pathname,int proj id 引數1 選擇乙個路徑填入 引數2 隨意填入乙個整形資料 返回值 ftok 根據兩個引數生成一把金鑰 key t key...

Python 02高階 04多程序多執行緒

tags python 多程序 併發 高階 必備知識 2019 年 本節主要描述 1.python程序執行緒協程併發等術語 2.以及如何高效利用python編寫高效能程式.協程是一種使用者級的輕量級執行緒 應用場景多用於 io 密集型,他有高併發的特點,不適用於 cpu 密集型的場景。協程主要是利用...

LINUX學習筆記15 程序間通訊4訊息佇列

a 本質 訊息鍊錶 b 分類 1.posix訊息佇列 可移植作業系統介面 2.系統v 隨核心持續的,只有在核心重啟和人工刪除,才會被刪除。每個訊息佇列對應唯一的鍵值 c 獲取鍵值 key t ftok char pathname,char proj 1.作用 返回檔名對應的鍵值,本質是個檔案 2.i...