6.php 850 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. $c1 = new chan();
  3. $num = 10;
  4. go(function () use ($c1,$num) {
  5. $read_list = [$c1];
  6. $write_list = null;
  7. echo "select yield\n";
  8. $result = chan::select($read_list, $write_list, 2);
  9. echo "select resume res: ".var_export($result,1)."\n";
  10. if ($read_list)
  11. {
  12. foreach($read_list as $ch)
  13. {
  14. for ($i=0;$i<$num;$i++)
  15. {
  16. $ret = $ch->pop();
  17. echo "pop [#$i] ret:".var_export($ret,1)."\n";
  18. }
  19. }
  20. }
  21. });
  22. go(function () use ($c1,$num) {
  23. echo "push start\n";
  24. for ($i=0;$i<$num;$i++)
  25. {
  26. if ($i == 2) {
  27. echo "start sleep\n";
  28. co:sleep(1);
  29. echo "end sleep\n";
  30. }
  31. $ret = $c1->push("data-$i");
  32. echo "push [#$i] ret:".var_export($ret,1)."\n";
  33. }
  34. });
  35. echo "main end\n";