As the RFC said. https://wiki.php.net/rfc/generator-delegation The defining feature of Generator functions is their support for suspending execution for later resumption. This capability gives applications a mechanism to implement asynchronous and concurrent architectures even in a traditionally single-threaded language like PHP. With simple userland task scheduling systems interleaved generators become lightweight threads of execution for concurrent processing tasks.
I wrote a small test. to see if it really concurrent processing any tasks. the result looks bad. Still single blocking thread. <?php function delayYield() { $delay = mt_rand(1, 5); echo "Delay $delay seconds" . PHP_EOL; sleep($delay); yield date('Y-m-d H:i:s'); } function demoYield() { yield from delayYield(); yield from delayYield(); yield from delayYield(); return delayYield(); } foreach (demoYield() as $v) { echo $v . PHP_EOL; } the executed result: Delay 3 seconds 2015-12-07 07:04:12 Delay 4 seconds 2015-12-07 07:04:16 Delay 1 seconds 2015-12-07 07:04:17 What is concurrent processing as you know? http://docs.hhvm.com/hack/async/introduction HHVM async described well . Appreciate your time. ---------------------------- Netroby -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php