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