Publication
Software - Practice and Experience
Paper

Signals, timers, and continuations for multithreaded user-level protocols

View publication

Abstract

Precise timing and asynchronous I/O are appealing features for many applications. Unix kernels provide such features on a per-process basis, using signals to communicate asynchronous events to applications. Per-process signals and timers are grossly inadequate for complex multithreaded applications that require per-thread signals and timers that operate at finer granularity. To respond to this need, we present a scheme that integrates asynchronous (Unix) signals with user-level threads, using the ARIADNE system as a platform. This is done with a view towards support for portable, multithreaded, and multiprotocol distributed applications, namely the CLAM (connectionless, lightweight, and multiway) communications library. In the same context, we propose the use of continuations as an efficient mechanism for reducing thread context-switching and busy-wait overheads in multithreaded protocols. Our proposal for integrating timers and signal-handling mechanisms not only solves problems related to race conditions, but also offers an efficient and flexible interface for timing and signalling threads. Copyright © 2006 John Wiley & Sons, Ltd.

Date

Publication

Software - Practice and Experience

Authors

Share