std.concurrency msg passing
cal
callumenator at gmail.com
Thu Oct 18 10:33:02 PDT 2012
On Thursday, 18 October 2012 at 06:30:08 UTC, Joshua Niehus wrote:
> Is the following snippet a bug?
>
> ---
> import core.thread;
> import std.stdio, std.concurrency;
>
> void foo(Tid tid) {
> send(tid, true);
> }
>
> void main() {
> auto fooTid = spawn(&foo, thisTid);
> auto receiveInt = receiveTimeout(dur!"seconds"(10), (int
> isInt) {
> writeln("I should not be here");
> });
> }
> // output: "I should not be here"
> ---
>
> If not, is there some way I could achieve
> "receiveOnlyTimeout!(int)(dur, fun);" ?
>
> Thanks,
> Josh
I can't see the bug? The receiver accepts a bool as an int, same
way a normal function does. The timeout is long enough that foo
gets a chance to send. If you want to stop the int receiver
getting a bool, you could add another receiver with (bool) { //
do nothing } or whatever before the (int) one, which will be a
better match for the send.
More information about the Digitalmars-d-learn
mailing list