1.php 759 B

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