Improving Responsiveness in Interactive Applications via Queues

William C. Wake(1), B. Douglas Wake(2), and Edward A. Fox(3)
  1. Dept. of Computer Science, Virginia Tech
  2. Representing himself
  3. Dept. of Computer Science and the Computing Center, Virginia Tech
PLOP '95 submission: June 7, 1995

Abstract

This paper presents a set of patterns for use in designing the low-level interaction structure of an interactive application.

Introduction

Systems can be categorized as being batch, real-time, or interactive. In a batch application, output is not synchronized with input. In a real-time application, the program reacts to the passage of time (and the "correctness" of a computation depends upon when the result of that computation is delivered, e.g., [Sha & Goodenough 1990]. In an interactive, or responsive, application, the program presents output in response to input, and the user reaction to that output can affect future input to the program. [Ambriola & Notkin 1988] [I'd appreciate a reference to the 3-way split of batch vs. real-time vs. reactive - it's not in A&N but I'm almost sure I saw it in an IEEE publication somewhere.] An interactive program must react to the user's actions, as quickly as possible. In graphical applications in particular, timely reaction to user actions is critical to achieving an adequate interactive feel. For example, if the cursor position doesn't consistently reflect the mouse motion, the system will feel sluggish.

The interaction style of an application should be reflected in its structure. Modern programs with a graphical user interface often manage small interactions, e.g., reacting to individual keystrokes, and the program design must accommodate that burden.

The following patterns focus on a design that will allow one to improve the performance and responsiveness of a program.

  1. Event Queue
  2. Merge Compatible Events
  3. Generate Artificial Events
  4. Decouple Execution and Output

Discussion

References

Copyright 1994-2010, William C. Wake - William.Wake@acm.org