Threads

Sean Kelly sean at invisibleduck.org
Wed Nov 19 11:24:56 PST 2008


DF wrote:
> Spacen Jasset Wrote:
> 
>> DF wrote:
>>> /**
>>>  * Testing.
>>>  */
>>> module Test;
>>>
>>> import std.thread;
>>> import std.stdio;
>>>
>>> class DerivedThread : Thread {
>>>
>>>      this() {
>>>          super(&run);
>>>      }
>>>
>>> private :
>>>      int run() {
>>>         writefln("Derived thread running.\n" );
>>> 	return 0;
>>>      }
>>> }
>>>
>>> void main() {
>>> 	Thread derived = new DerivedThread();
>>> 	derived.start();
>>> }
>>>
>>> This code makes no output. Why?
>> Not quite sure, but you could try derived.wait() in main to wait for the 
>> thread to finish.
> It won't help. And method wait() is hidden. I'm using D 2.0.

If you're using D 2.0 then that shouldn't even compile.  In fact, 
std.thread doesn't exist any longer.  Try:

module Test;

import core.thread;
import std.stdio;

class DerivedThread : Thread {
     this() {
         super(&run);
     }

private:
     void run() {
         writefln( "Derived thread running." );
     }
}

void main() {
     Thread derived = new DerivedThread();
     derived.start();
}

Note that if you set "Thread.isDaemon = true" then you will need to 
join() the thread to wait for it to complete before the app exits.


Sean



More information about the Digitalmars-d mailing list