Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions

33
vendor/swoole/examples/coroutine/select/1.php vendored Executable file
View File

@ -0,0 +1,33 @@
<?php
$c1 = new chan();
//consumer first with select mode
$num = 10;
go(function () use ($c1,$num) {
$read_list = [$c1];
$write_list = null;
echo "select yield\n";
$result = chan::select($read_list, $write_list, 2);
echo "select resume res: ".var_export($result,1)."\n";
if ($read_list)
{
foreach($read_list as $ch)
{
for ($i=0;$i<$num;$i++)
{
$ret = $ch->pop();
echo "pop [#$i] ret:".var_export($ret,1)."\n";
}
}
}
});
go(function () use ($c1,$num) {
echo "push start\n";
for ($i=0;$i<$num;$i++)
{
$ret = $c1->push("data-$i");
echo "push [#$i] ret:".var_export($ret,1)."\n";
}
});
echo "main end\n";

23
vendor/swoole/examples/coroutine/select/2.php vendored Executable file
View File

@ -0,0 +1,23 @@
<?php
$c1 = new chan();
//consumer first without select mode
$num = 10;
go(function () use ($c1, $num) {
echo "pop start\n";
for ($i=0;$i<$num;$i++)
{
$ret = $c1->pop();
echo "pop [#$i] ret:".var_export($ret,1)."\n";
}
});
go(function () use ($c1,$num) {
echo "push start\n";
for ($i=0;$i<$num;$i++)
{
$ret = $c1->push("data-$i");
echo "push [#$i] ret:".var_export($ret,1)."\n";
}
});
echo "main end\n";

32
vendor/swoole/examples/coroutine/select/3.php vendored Executable file
View File

@ -0,0 +1,32 @@
<?php
$c1 = new chan(1);
//product first with select mode
$num = 10;
go(function () use ($c1,$num) {
echo "push start\n";
for ($i=0;$i<$num;$i++)
{
$ret = $c1->push("data-$i");
echo "push [#$i] ret:".var_export($ret,1)."\n";
}
});
go(function () use ($c1,$num) {
$read_list = [$c1];
$write_list = null;
echo "select yield\n";
$result = chan::select($read_list, $write_list, 2);
echo "select resume res: ".var_export($result,1)."\n";
if ($read_list)
{
foreach($read_list as $ch)
{
for ($i=0;$i<$num;$i++)
{
$ret = $ch->pop();
echo "pop [#$i] ret:".var_export($ret,1)."\n";
}
}
}
});
echo "main end\n";

23
vendor/swoole/examples/coroutine/select/4.php vendored Executable file
View File

@ -0,0 +1,23 @@
<?php
$c1 = new chan(2);
//product first without select mode
$num = 10;
go(function () use ($c1,$num) {
echo "push start\n";
for ($i=0;$i<$num;$i++)
{
$ret = $c1->push("data-$i");
echo "push [#$i] ret:".var_export($ret,1)."\n";
}
});
go(function () use ($c1, $num) {
echo "pop start\n";
for ($i=0;$i<$num;$i++)
{
$ret = $c1->pop();
echo "pop [#$i] ret:".var_export($ret,1)."\n";
}
});
echo "main end\n";

37
vendor/swoole/examples/coroutine/select/5.php vendored Executable file
View File

@ -0,0 +1,37 @@
<?php
$c1 = new chan();
$c2 = new chan();
function fibonacci($c1, $c2)
{
go(function () use ($c1, $c2) {
$a = 0;
$b = 1;
while(1) {
$read_list = [$c2];
$write_list = [$c1];
$result = chan::select($read_list, $write_list, 2);
if ($write_list) {
$t = $a + $b;
$a = $b;
$b = $t;
$write_list[0]->push($a);
}
if ($read_list) {
$ret = $read_list[0]->pop();
if ($ret === 1) {
echo "quit\n";
return 1;
}
}
}
});
}
$num = 10;
go(function () use ($c1, $c2, $num) {
for ($i = 0; $i < $num; $i ++) {
$ret = $c1->pop();
echo "fibonacci @$i $ret\n";
}
$c2->push(1);
});
fibonacci($c1, $c2);

38
vendor/swoole/examples/coroutine/select/6.php vendored Executable file
View File

@ -0,0 +1,38 @@
<?php
$c1 = new chan();
$num = 10;
go(function () use ($c1,$num) {
$read_list = [$c1];
$write_list = null;
echo "select yield\n";
$result = chan::select($read_list, $write_list, 2);
echo "select resume res: ".var_export($result,1)."\n";
if ($read_list)
{
foreach($read_list as $ch)
{
for ($i=0;$i<$num;$i++)
{
$ret = $ch->pop();
echo "pop [#$i] ret:".var_export($ret,1)."\n";
}
}
}
});
go(function () use ($c1,$num) {
echo "push start\n";
for ($i=0;$i<$num;$i++)
{
if ($i == 2) {
echo "start sleep\n";
co:sleep(1);
echo "end sleep\n";
}
$ret = $c1->push("data-$i");
echo "push [#$i] ret:".var_export($ret,1)."\n";
}
});
echo "main end\n";

54
vendor/swoole/examples/coroutine/select/7.php vendored Executable file
View File

@ -0,0 +1,54 @@
<?php
//chan1 block and chan buffer
$c1 = new chan();
$c2 = new chan(10);
$num = 10;
go(function () use ($c2,$num) {
for ($i=0;$i<$num;$i++)
{
$ret = $c2->push("chan2-$i");
echo "chan 2 push [#$i] ret:".var_export($ret,1)."\n";
}
});
go(function () use ($c1,$num) {
$read_list = [$c1];
$write_list = null;
$result = chan::select($read_list, $write_list, 2);
echo "select resume res: ".var_export($result,1)."\n";
if ($read_list)
{
foreach($read_list as $ch)
{
for ($i=0;$i<$num;$i++)
{
$ret = $ch->pop();
echo "chan1 pop [#$i] ret:".var_export($ret,1)."\n";
}
}
}
});
go(function () use ($c1,$num) {
echo "chan1 push start\n";
for ($i=0;$i<$num;$i++)
{
if ($i == 2) {
echo "start sleep\n";
co:sleep(1);
echo "end sleep\n";
}
$ret = $c1->push("chan1-$i");
echo "chan1 push [#$i] ret:".var_export($ret,1)."\n";
}
});
go(function () use ($c2,$num) {
echo "chan2 pop start\n";
for ($i=0;$i<$num;$i++)
{
$ret = $c2->pop();
echo "chan2 pop [#$i] ret:".var_export($ret,1)."\n";
}
});
echo "main end\n";

48
vendor/swoole/examples/coroutine/select/8.php vendored Executable file
View File

@ -0,0 +1,48 @@
<?php
//chan1 block and chan buffer
$c1 = new chan();
$c2 = new chan(10);
$num = 10;
go(function () use ($c2,$num) {
for ($i=0;$i<$num;$i++)
{
$ret = $c2->push("chan2-$i");
echo "chan 2 push [#$i] ret:".var_export($ret,1)."\n";
}
});
go(function () use ($c1,$c2,$num) {
$ori_list = $read_list = [$c1,$c2];
$write_list = null;
$result = chan::select($read_list, $write_list, 2);
echo "select resume res: ".var_export($result,1)."\n";
if ($ori_list)
{
foreach ($ori_list as $chan => $ch)
{
for ($i=0;$i<$num;$i++)
{
$ret = $ch->pop();
$chan_id = $chan + 1;
echo "chan{$chan_id} pop [#$i] ret:".var_export($ret,1)."\n";
}
}
}
});
go(function () use ($c1,$num) {
echo "chan1 push start\n";
for ($i=0;$i<$num;$i++)
{
if ($i == 2) {
echo "start sleep\n";
co:sleep(1);
echo "end sleep\n";
}
$ret = $c1->push("chan1-$i");
echo "chan1 push [#$i] ret:".var_export($ret,1)."\n";
}
});
echo "main end\n";