Thread overview | ||||||
---|---|---|---|---|---|---|
|
July 31, 2014 readln() blocks file operations on windows | ||||
---|---|---|---|---|
| ||||
Hi, consider this code: import std.stdio; import std.concurrency; import core.thread; void tryOpen() { Thread.sleep(2.seconds); try { auto f = File("nonexistent"); } catch (Exception e) { writeln("Could not open a file"); } } void main() { spawn(&tryOpen); readln(); } On Linux, it works as expected, showing a "Could not open a file" after two or so seconds. On windows, however, the file opening gets blocked until a line is read from stdin. Is this a feature or a bug? If it is a feature, it certainly is not documented. Cheers, Martin |
July 31, 2014 Re: readln() blocks file operations on windows | ||||
---|---|---|---|---|
| ||||
Posted in reply to Martin Drasar | Note that output to stdout is not good choice to check event order, because it's buffered. Try to flush stdout or write to stderr. Maybe it's actual problem. |
July 31, 2014 Re: readln() blocks file operations on windows | ||||
---|---|---|---|---|
| ||||
Posted in reply to FreeSlave | On 31.7.2014 20:37, FreeSlave via Digitalmars-d wrote:
> Note that output to stdout is not good choice to check event order, because it's buffered. Try to flush stdout or write to stderr. Maybe it's actual problem.
Hi,
this is just for illustration, although I think that writeln flushes itself. I was checking it in a debugger after it suddenly hung my entire program.
Martin
|
August 05, 2014 Re: readln() blocks file operations on windows | ||||
---|---|---|---|---|
| ||||
Posted in reply to Martin Drasar | On Thursday, 31 July 2014 at 19:13:28 UTC, Martin Drasar via Digitalmars-d wrote:
> On 31.7.2014 20:37, FreeSlave via Digitalmars-d wrote:
>> Note that output to stdout is not good choice to check event order,
>> because it's buffered. Try to flush stdout or write to stderr. Maybe
>> it's actual problem.
>
> Hi,
>
> this is just for illustration, although I think that writeln flushes
> itself. I was checking it in a debugger after it suddenly hung my entire
> program.
>
> Martin
Hi,
It works under Windows wenn compiled as a 64-bit program ( -m64 )
|
Copyright © 1999-2021 by the D Language Foundation