parallel\Channel::__construct

(1.1.0)

parallel\Channel::__construct通道构造

描述

public parallel\Channel::__construct()

将创建一个匿名的无缓冲通道

public parallel\Channel::__construct(int $capacity)

将创建一个带有指定容量的匿名缓冲通道

参数

capacity

可以是 Channel::Infinite 或正整数

添加备注

用户贡献的备注 2 个备注

2
abolfazl dot ziaratban at gmail dot com
3 年前
$capacity 是缓冲区中堆栈的数量。

例如

<?php
use parallel\{Channel,Runtime};

$test = function($ch){
var_dump($ch->Recv());
var_dump($ch->Recv());
var_dump($ch->Recv());
echo
'Sleep'.PHP_EOL;
sleep(3);
echo
'Call Recv()'.PHP_EOL;
var_dump($ch->Recv());
};

$t1 = new Runtime();
$ch = new Channel(3); //缓冲通道
$ch->Send('abc1');
$ch->Send('abc2');
$ch->Send('abc3');
$t1->Run($test,[$ch]);
sleep(1);
echo
'Wait for Recv()...'.PHP_EOL;
$ch->Send('abc4'); #php 仅等待通道中的一个堆栈为空(通过 Recv() 方法)
?>

结果
string(4) "abc1"
string(4) "abc2"
string(4) "abc3"
Sleep
Wait for Recv()...
Call Recv()
string(4) "abc4"
0
frame86 at live dot com
4 年前
请注意 $capacity 单位是 1 MiB,而不是字节。
To Top