On Tue, 28 Apr 2009 10:16:21 -0400, dsimcha <[email protected]> wrote:

== Quote from Steven Schveighoffer ([email protected])'s article
On Tue, 28 Apr 2009 09:51:54 -0400, dsimcha <[email protected]> wrote:
> == Quote from Steven Schveighoffer ([email protected])'s article
>> Have you tried synchronizing on an actual object? I remember some time >> back how Walter proposed removing synchronized as you have written it.
>> Not sure what happened for that.
>> The way you have written the code, assuming that the synchronized
>> statement is doing what you think it's doing, the call to writeln should
>> be completely syncrhonous, so multithreading issues or not, it should
>> work.
>> -Steve
>
> Good idea, still doesn't work.  All of the loops just die after a few
> iterations,
> leaving me at 0% CPU usage.  This happens on multiple win32 boxes.
> Could someone
> please test this on some other OS?
Latest compiler? D1 D2?
-Steve

2.029. Thanks for your help. I'm just trying to make sure this is a legit bug and maybe understand its underpinnings a little better before I file a bug report,
because if it is a legit bug, it's a pretty serious one.

Yep, I confirm (on WinXP).  I get 2 or three outputs and then hang.

I also tried several different things:

Things that worked (continually output "Doing stuff."):
1. removing the synchronized(lock) statement
2. Changing the number of threads to 0
3. Changing the print line to use printf("Doing stuff.\n");

Things that still failed:
4. Changing the number of threads to 1 (which would mean 2 threads, the main thread and the sub thread).

The fact that 2 worked and 3 worked indicates to me that it's not simply a bug involving the lock mechanism, it's definitely something to do with writeln.

I'd file a bug with the latest code you posted.

I tried the original code once on Linux. I get much more printouts than 2 or 3, but it still hangs.

So it's cross-platform.

-Steve

Reply via email to