digitalmars.D.bugs - [Issue 14953] New: std.concurrency: Add function to flush message box
- via Digitalmars-d-bugs (36/36) Aug 24 2015 https://issues.dlang.org/show_bug.cgi?id=14953
https://issues.dlang.org/show_bug.cgi?id=14953 Issue ID: 14953 Summary: std.concurrency: Add function to flush message box Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: phobos Assignee: nobody puremagic.com Reporter: wendlec tcd.ie This enhancement request was inspired by this thread: http://forum.dlang.org/post/yavfidlhfohqfziqvkzr forum.dlang.org The scenario: A thread has several items in the message box, and the user wants to cancel not just the current operation but flush the thread's message box, since the items in the message box are no longer relevant. The current behavior is that the thread insists on processing all items in the message box. To suppress the thread from doing actual work, John Colvin proposed this workaround: void flushMailbox() { bool r; do { r = receiveTimeout(Duration.zero, (Variant _){}); } while(r); } In this way, the thread loops over each item in the message box, but does nothing - until the message box is empty. However, it would be more efficient to have a library function that empties the message box immediately, instead of looping over the message box, cancelling each item individually, before new input can be processed. --
Aug 24 2015