[Issue 6116] New: May not join spawn()'ed threads
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Jun 6 16:37:40 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6116
Summary: May not join spawn()'ed threads
Product: D
Version: D2
Platform: x86_64
OS/Version: Linux
Status: NEW
Severity: major
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: acehreli at yahoo.com
--- Comment #0 from Ali Cehreli <acehreli at yahoo.com> 2011-06-06 16:33:09 PDT ---
Version: 2.053
The command line:
~/dmd2.053/linux/bin64/dmd deneme.d -ofdeneme -unittest -J. -w
Although I have multiple threads spawning each other here, I also had problems
with just a single thread spawned from main. I wanted to keep this example as
it exposes many different outputs for me.
import std.stdio;
import std.concurrency;
import core.thread;
void foo()
{
foreach (i; 0 .. 5) {
Thread.sleep(dur!"msecs"(500));
writeln(i, " foo");
}
}
void intermediate3()
{
spawn(&foo);
writeln("intermediate3 done");
}
void intermediate2()
{
spawn(&intermediate3);
writeln("intermediate2 done");
}
void intermediate()
{
spawn(&intermediate2);
writeln("intermediate done");
}
void main()
{
spawn(&intermediate);
writeln("main done");
}
1) ThreadException:
$ time ./deneme
main done
intermediate done
intermediate2 done
intermediate3 done
core.thread.ThreadException at src/core/thread.d(866): Unable to join thread
----------------
----------------
real 0m0.003s
user 0m0.000s
sys 0m0.000s
2) No output from foo() (foo() is not joined)
$ time ./deneme
main done
intermediate done
intermediate2 done
intermediate3 done
real 0m0.003s
user 0m0.000s
sys 0m0.000s
3) Segmentation fault:
$ time ./deneme
main done
intermediate done
Segmentation fault
real 0m0.003s
user 0m0.000s
sys 0m0.000s
4) Expected behavior:
$ time ./deneme
main done
intermediate done
intermediate2 done
intermediate3 done
0 foo
1 foo
2 foo
3 foo
4 foo
--
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