How do I exhaust a thread's message queue?

Andrej Mitrovic andrej.mitrovich at gmail.com
Fri Apr 1 19:58:55 PDT 2011


Actually I have a bug in `foo()`, the switch statement is executed
even if I didn't get a message back. Here's a fix:

void foo()
{
    int result;

    bool gotMessage;

    while (true)
    {
        gotMessage = receiveTimeout(1000,
                                    (int x) { result = x; }
                                    );

        if (!gotMessage)
            break;

        switch (result)
        {
            case 1:
                writeln("one");
                break;
            case 2:
                writeln("two");
                break;
            default:
                writeln("something else");
                break;
        }
    }

    writeln("Done!");
}


More information about the Digitalmars-d-learn mailing list