%T New ALT for Application Timers and Synchronisation Point Scheduling
%A  Øyvind Teig,  Per Johan Vannebo
%E Peter H. Welch,  Herman Roebbers,  Jan F. Broenink,  Frederick R. M. Barnes,  Carl G. Ritson,  Adam T. Sampson,  G. S. Stiles,  Brian Vinter
%B Communicating Process Architectures 2009
%X During the design of a small channel\-based concurrency
   runtime system
(ChanSched, written in ANSI C), we saw that
   application timers (which
we call egg and repeat timers)
   could be part of its supported ALT
construct, even if their
   states live through several ALTs. There are
no side effects
   into the ALT semantics, which enable waiting for
channels,
   channel timeout and, now, the new application
   timers.
Application timers are no longer busy polled for
   timeout by the
process. We show how the classical occam
   language may benefit from a
spin\-off of this same idea. 
   Secondly, we wanted application
programmers to be freed from
   their earlier practice of explicitly
coding communication
   states at channel synchronisation points, which
was needed
   by a layered in\-house scheduler. This led us to develop
   an
alternative to the non\-ANSI C \[dq]computed goto\[dq]
   (found in gcc). Instead,
we use a switch/case with goto
   line\-number\-tags in a synch\-point\-table
for scheduling. 
   We call this table, one for each process, a proctor
table.
   The programmer does not need to manage this table, which
   is
generated with a script, and hidden within an
   \[sh]include file.