[Issue 8774] 2.059 worked 2.060 does not: Unable to join thread

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Dec 23 02:34:42 PST 2012


http://d.puremagic.com/issues/show_bug.cgi?id=8774



--- Comment #10 from Dmitry Olshansky <dmitry.olsh at gmail.com> 2012-12-23 02:32:18 PST ---
(In reply to comment #8)
> Here is a simple test case:
> 
> -----
> 
> module program;
> 
> import std.stdio;
> import core.thread;
> 
> void main () {
> 
>   Thread t1, t2;
> 
>   t1 = new Thread(delegate { t2.start(); });
>   t2 = new Thread(delegate { Thread.sleep(dur!"seconds"(1)); });
> 
>   t1.start();
>   t2.join();
> 
> }
> 
> -----
> 
> http://dpaste.dzfl.pl/0d24dd06
> 
> output:
>   core.thread.ThreadException at src/core/thread.d(780): Unable to join thread
> 
> if t2.join occurs after t2 already finished then exception is not thrown, hence
> the sleep

This one is a genuine race condition: t2.join could be called before t2 is
actually started by t1. And as far as I can tell this is the *most* *probable*
outcome. So it can't be seriously taken as test case without proper
synchronization between threads.

What it shows though is that you can't join a thread that isn't started and the
error is "Unable to join thread".

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list