Hello, everyone,
i'm testing my luck with this code, but it does not work. How to make it work?

module test;

import std.stdio, std.concurrency, std.variant;

class Test {
    public:
        void run()
        {
auto tid = spawn(&this.foo); // is it possible to do so?

            foreach (i; 0 .. 10)
                tid.send(i);
            tid.send(1.0f);
            tid.send("hello");
            tid.send(thisTid);
        
receive((int x) => writeln("Main thread received message: ", x));
        }

    private:
        void foo()
        {
            bool cont = true;
                
            while (cont)
            {
                receive(
                    (int msg) => writeln("int received: ", msg),
                    (Tid sender) { cont = false; sender.send(-1); },
                    (Variant v) => writeln("huh?")
                );
            }
        }
}

void main()
{
    Test t = new Test();
    t.run();
}

Reply via email to