On Mon, 27 Apr 2009 18:53:04 -0400, dsimcha <[email protected]> wrote:
The following small test program seems to have a weird deadlock or
something:
It should keep printing the phrase "Doing stuff." forever, but it only
gets
through maybe two iterations before its CPU usage does to zero and it
stops
printing, at least on my computer. Has anyone noticed any bad behavior
with
std.stdio and multithreading?
import core.thread, std.stdio;
void main() {
Thread[] myThreads;
foreach(i; 0..4) {
myThreads ~= new Thread( { doStuff(); });
myThreads[$ - 1].start;
}
}
void doStuff() {
while(true) {
synchronized {
writeln("Doing stuff.");
}
}
}
If the writeln line is commented out, this thing keeps executing the
empty
loop with measurable CPU usage.
Shouldn't you be waiting for the threads to exit at the end of main? I
wonder if the GC has been shut down by main exiting.
-Steve