Weird std.stdio threading bug?

Steven Schveighoffer schveiguy at yahoo.com
Tue Apr 28 06:06:27 PDT 2009


On Mon, 27 Apr 2009 18:53:04 -0400, dsimcha <dsimcha at yahoo.com> 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




More information about the Digitalmars-d mailing list