On Saturday, 13 April 2013 at 08:54:03 UTC, John Colvin wrote:
On Saturday, 13 April 2013 at 01:26:16 UTC, James Wirth wrote:
The discussion:
http://forum.dlang.org/thread/mailman.426.1286264462.858.digitalmar...@puremagic.com?page=9
implies that:
receiveTimeout(dur!"msecs"(0), some-callback-function)
is acceptable - meaning that no blocking occurs. A simple
experiment verifies this - but I hesitate to use
"undocumented" features. Some APIs would interpret the 0 as
infinity.
I also fear that placing such a nonblocking recieve into the
main event loop of a GUI program would impact performance - it
would also be non-generic. Is there a fast function which
returns true just when the "mail box" is non-empty?
Thanks
Make a small test and time it. I personally wouldn't expect to
see much slowdown from the extra code invoked by receiveTimeout
compared to the rest of a busy loop.
However, either special casing receiveTimeout for 0 duration or
introducing a new receiveNoBlock or similar would be good.
Im using wine on Linux to develop MS code (dont have an MS box)
so am not too confident of timing accuracy - however, I tried it
in the really simple MS GUI library Im making, and it seems to
work ok.
Special casing receiveTimeout would introduce less name bloat but
might impact other receive performance. As a Java programmer I
tend to ignore slowdowns of 2:1 and as a Python programmer even
70:1 - but I could see that system programmers might disagree.
Thanks for your thoughts.