On Monday, 30 January 2017 at 18:48:10 UTC, Ali Çehreli wrote:
On 01/30/2017 03:03 AM, Profile Anaysis wrote:
> I need to yield from a complex recursive function too allow
visualizing
> what it is doing.
>
> e.g., if it is a tree searching algorithm, I'd like to yield
for each
> node so that the current state can be shown visually.

I used tree iteration as a Generator example here:

  http://ddili.org/ders/d.en/fibers.html

It's in the code where the function 'byNode' appears. (The example builds on an earlier tree iteration code in the same chapter.)

Ali

I tried your lambda based fib example and it works as expected(using a function)

But when I try the class version it crashes without a call stack or any info(somewhere in the fiber module and an access violation).

import std.stdio, std.concurrency, core.thread;

class Search : Fiber
{
    this() { super(&start); }
    int res = 0;
    void start()
    {                   
        Fiber.yield();
        res = 1;
    }
}

void main()
{

        auto search = new Search();

        search.call(); writeln(search.res);
        search.call(); writeln(search.res);
search.call(); writeln(search.res); // crashes after 3rd call(first two work fine)
}


Any ideas what why it is crashing like this?

Reply via email to