Escaping the event loop: an alternative control structure for multi-threaded GUIs

The event-driven, or reactive, programming style of the contemporary GUI is a major reason they are difficult to program. This is compounded in a distributed application. The reactive style, however, reflects the mismatch between multithreaded interfaces and a single threaded process, and is actually the equivalent of continuation passing style, a source code transformation used by some compilers. Using continuations for callbacks eliminates much of the difficulty of the reactive style. We describe a toolkit for managing the multiple threads of control which can be combined with existing GUI toolkits and which supports distributed applications.

[1]  Dan R. Olsen,et al.  Propositional production systems for dialog description , 1990, CHI '90.

[2]  R. Daniel Bergeron,et al.  Specifying complex dialogs in ALGAE , 1986, CHI '87.

[3]  Paul Haahr Montage: Breaking Windows into Small Pieces , 1990, USENIX Summer.

[4]  Brad A. Myers,et al.  Why are Human-Computer interfaces Difficult to Design and Implement? , 1993 .

[5]  Ralph D. Hill Languages for the construction of multi-user multi-media synchronous (MUMMS) applications , 1992 .

[6]  Rob Pike A Concurrent Window System , 1989, Comput. Syst..

[7]  John H. Reppy,et al.  Higher-Order Concurrency , 1992 .

[8]  R. Kent Dybvig,et al.  The Scheme Programming Language , 1995 .

[9]  Ralph D. Hill,et al.  Supporting concurrency, communication, and synchronization in human-computer interaction—the Sassafras UIMS , 1986, TOGS.

[10]  Steven L. Rohall,et al.  Rendezvous: an architecture for synchronous multi-user applications , 1990, CSCW '90.

[11]  Ken Perlin,et al.  Dreme: for life in the net , 1995 .

[12]  Craig Chambers,et al.  An efficient implementation of SELF, a dynamically-typed object-oriented language based on prototypes , 1991 .

[13]  Ralph D. Hill The Rendezvous constraint maintenance system , 1993, UIST '93.

[14]  Mitchell Wand,et al.  Continuation-Based Multiprocessing , 1980, High. Order Symb. Comput..

[15]  C. A. R. Hoare,et al.  Communicating Sequential Processes (Reprint) , 1983, Commun. ACM.

[16]  John C. Reynolds,et al.  The discoveries of continuations , 1993, LISP Symb. Comput..

[17]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .