On Wednesday, 19 February 2014 at 17:05:01 UTC, John Colvin wrote:
delegate

isn't a type. try

int delegate()

instead

Thanks for the hint! This works now:

void spawnedFunc(Tid tid)
{
     receive(
         (int i) { writeln("Received the number ", i);},
         (int function() fp) { writeln("Receiving a function");}      
     );
};

int function() fp;

void main(string[] args)
{
        auto tid = spawn(&spawnedFunc, thisTid);

        int a = 7;
        static int foo() { return 3; }
        fp = &foo;

        tid.send(fp);
}

A delegate wouldn't compile. I guess it is because it could reference data outside the thread which would result in the thread reaching into memory of the calling thread.

I don't really understand why foo has to be static to compile. But this is really nice now :-).

-- Bienlein

Reply via email to