Thread will get garbage collected?

kinke via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jan 16 15:25:34 PST 2017


On Monday, 16 January 2017 at 22:08:56 UTC, JN wrote:
> Am I correctly understanding, that after going out of scope, 
> it's possible for GC to destroy my thread before the file 
> finishes loading? How to prevent GC from destroying my thread 
> before it finishes and make sure the file is loaded completely?

The GC may collect it as soon as there's no reference to the 
Thread object anymore. But you'll probably want to keep a 
reference anyway, to join it (wait until it's finished), 
something like:

Thread loadFileAsync(string path)
{
   // start() returns `this`
   return new Thread({ writeln(readText(path)); }).start();
}

void main()
{
   auto thread = loadFileAsync("foo.txt");

   // [do something useful in parallel]

   // wait for other thread
   thread.join();
}



More information about the Digitalmars-d-learn mailing list