Weird std.stdio threading bug?
Graham St Jack
Graham.StJack at internode.on.net
Thu Apr 30 17:11:15 PDT 2009
I posted a bug report for this a few days ago (2890). I got as far as
finding out that it is a file locking problem caused by what looks like a
compiler bug re calling the destructor of a struct. The following patch
to std.stdio works around the problem, but is hardly a fix.
$ diff dmd/src/phobos/std/stdio.d stdio.d
922c922
< //return LockingTextWriter(this);
---
> return LockingTextWriter(this);
925,926c925,926
< auto result = LockingTextWriter(this);
< return result;
---
> //auto result = LockingTextWriter(this);
> //return result;
On Mon, 27 Apr 2009 22:53:04 +0000, dsimcha 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.
More information about the Digitalmars-d
mailing list