Hi, it'd be really cool if the implementation would do the "real" context switch in c, which would be the true basis for spl_coroutine. The current implementation seems not to do that.
Context switch in c would be comparable with threads. In fact coroutines would be a comensation for lacking threads functionality in php, as they are already implemented on most popular platforms. However, it would require some platform specific libs (fibers on windows, setjmp and longjmp on unix(like)). Coroutines in c are per se thread safe, so implementing them once would not hurt both ts and nts. Additionally, in some cases coroutines can even have advantages over the "usual" preemptive threads. Regards Anatoliy Am Mi, 6.06.2012, 04:42 schrieb Laruence: > On Wed, Jun 6, 2012 at 10:27 AM, Laruence <larue...@php.net> wrote: >> On Wed, Jun 6, 2012 at 10:15 AM, Laruence <larue...@php.net> wrote: >>> Hi Nikita: >>> >>> the most important part to me is how did you implemented `yield` >>> keyword, is there a whole patch file I can look into? >> Nervermind, I will check the branch out later >> >> thanks > > After a quick look, I think the main idea should goes to two parts: > > 1. implement yield (Zend) > 2. implement spl_generators but not generator class (Spl) > > then we can implement spl_coroutine later base on this. what do you > think? > > thanks >>> >>> what will happen if you use a `yield` in a normal function? >>> >>> actually, I tried to implemented coroutine, but since I could not >>> find a way to make zend_execute interruptable, then I didn't make it. >>> >>> so, I am really interesting of this tech-specific :) >>> >>> thanks >>> >>> On Wed, Jun 6, 2012 at 1:35 AM, Nikita Popov >>> <nikita....@googlemail.com> wrote: >>>> Hi internals! >>>> >>>> In the last few days I've created a proof of concept implementation >>>> for generators in PHP. It's not yet complete, but the basic >>>> functionality is there: >>>> https://github.com/nikic/php-src/tree/addGeneratorsSupport >>>> >>>> The implementation is outlined in the RFC-stub here: >>>> https://wiki.php.net/rfc/generators >>>> >>>> Before going any further I'd like to get some comments about what you >>>> think of adding generator support to PHP. >>>> >>>> If you don't know what generators are you should have a look at the >>>> "Introduction" section in the above RFC or in the Python documentation >>>> at http://wiki.python.org/moin/Generators. >>>> >>>> Nikita >>>> >>>> -- >>>> PHP Internals - PHP Runtime Development Mailing List >>>> To unsubscribe, visit: http://www.php.net/unsub.php >>>> >>> >>> >>> >>> -- >>> Laruence Xinchen Hui >>> http://www.laruence.com/ >> >> >> >> -- >> Laruence Xinchen Hui >> http://www.laruence.com/ > > > > -- > Laruence Xinchen Hui > http://www.laruence.com/ > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php