| [487198c] | 1 | Synchronous Programming with User-Level Threads in C∀
 | 
|---|
 | 2 | 
 | 
|---|
 | 3 | When computations cannot be satisfied immediately, programmers must use
 | 
|---|
 | 4 | one of two paradigms, Synchronous Programming and Asynchronous Programming.
 | 
|---|
 | 5 | This presentation discusses the benefits Synchronous Programming over
 | 
|---|
 | 6 | Asynchronous Programming and what requirements exist to use this paradigm.
 | 
|---|
 | 7 | It also discusses how C∀, a concurrent and backwards-compatible extension
 | 
|---|
 | 8 | of the C programming language, has powerful tools available for simple and
 | 
|---|
 | 9 | efficient Synchronous Programming. These tools include user-level threads
 | 
|---|
 | 10 | and high-level locking mechanisms which simply solve common problems.
 | 
|---|
 | 11 | Finally, the presentation shows different techniques to combine these
 | 
|---|
 | 12 | features with existing code to either uses blocking operations provided by
 | 
|---|
 | 13 | the kernel or is built according to an asynchronous paradigm.
 | 
|---|
 | 14 | 
 | 
|---|
 | 15 | 
 | 
|---|
 | 16 | 
 | 
|---|
 | 17 | 
 | 
|---|
 | 18 | 
 | 
|---|
 | 19 | 
 | 
|---|
 | 20 | 
 | 
|---|
 | 21 | 
 | 
|---|
 | 22 | 
 | 
|---|
 | 23 | C∀ is a polymorphic, non-object-oriented, concurrent, backwards-compatible
 | 
|---|
 | 24 | extension of the C programming language. This paper discusses the design
 | 
|---|
 | 25 | philosophy and implementation of its advanced control-flow and concurrent/parallel
 | 
|---|
 | 26 | features, along with the supporting runtime written in C∀. These features
 | 
|---|
 | 27 | are created from scratch as ISO C has only low-level and/or unimplemented
 | 
|---|
 | 28 | concurrency, so C programmers continue to rely on library features like pthreads.
 | 
|---|
 | 29 | C∀ introduces modern language-level control-flow mechanisms, like generators,
 | 
|---|
 | 30 | coroutines, user-level threading, and monitors for mutual exclusion and
 | 
|---|
 | 31 | synchronization. The runtime provides significant programmer simplification
 | 
|---|
 | 32 | and safety by eliminating spurious wakeup and monitor barging. The runtime
 | 
|---|
 | 33 | also ensures multiple monitors can be safely acquired simultaneously (deadlock free),
 | 
|---|
 | 34 | and this feature is fully integrated with all monitor synchronization mechanisms.
 | 
|---|
 | 35 | All control-flow features integrate with the C∀ polymorphic type-system and
 | 
|---|
 | 36 | exception handling, while respecting the expectations and style of C programmers.
 | 
|---|
 | 37 | Experimental results show comparable performance of the new features with similar
 | 
|---|
 | 38 | mechanisms in other concurrent programming languages.
 | 
|---|
 | 39 | KEYWORDS
 | 
|---|
 | 40 | generator, coroutine, concurrency, parallelism, thread, monitor, runtime, C, C∀ (Cforall)
 | 
|---|