On 2012-08-04 17:06, Russel Winder wrote:
I am sure I am just missing something simple, but I need the nudge…

I can do:

         import core.thread ;
         import std.stdio ;

         int main(immutable string[] args) {
           auto f() { return delegate () { writeln("Hello World."); }; }
           auto t = new Thread(f);
           t.start();
           t.join();
           return 0;
         }

it is Thread(f) rather than Thread(&f) because f is a function returning
a void delegate() rather than being a void(). However:

         import core.thread ;
         import std.stdio ;

         int main(immutable string[] args) {
           auto t = new Thread( delegate () { return delegate () { writeln("Hello 
World."); }; } ) ;
           t.start();
           t.join();
           return 0;
         }

trial.d(7): Error: constructor core.thread.Thread.this (void function()
fn, ulong sz = cast(ulong)0) is not callable using argument types (void
delegate() delegate() pure nothrow @safe)
Failed: 'dmd' '-v' '-o-' 'trial.d' '-I.'

So I cannot use an anonymous delegate where I can use a named delegate?

If you take a look at the declaration of the constructor for "Thread" you can see that it expects a function pointer. I'm not sure what's happening in the first example. I don't think any of the above examples should work.

--
/Jacob Carlborg

Reply via email to