Skip to content
Siqing Wang edited this page Sep 10, 2013 · 1 revision

μC++

The starting point for the project was the development of high-level concurrency in an object-oriented programming language. This approach is in contrast to programming with threads and locks, e.g., POSIX threads, which deemed unreasonable because it is complicated and error-prone (like assembler programming). An attempt was made to add concurrency without extending C++, but it turns out to be impossible to build either an efficient or sound concurrency library due to fundamental language issues (not problems with C++); therefore, a concurrent dialect of C++ was created, called μC++.

The μC++ project extends C++ with new constructs providing advanced control-flow including light-weight concurrency on shared-memory uni- and multi-processor computers running UNIX and Linux operating systems. μC++ accomplishes this by providing new kinds of classes: coroutines, which have independent execution states; tasks, which have their own threads; and monitors, which allow for safe communication among tasks. These new classes can take part in inheritance, overloading, and templates, just like other classes. As well, C++ exception handling is extended, allowing exceptions to propagate among coroutines and tasks. Additional capabilities include: clustering of tasks and processors, object-oriented non-blocking I/O for files and sockets, and support for real-time programming. True parallelism is achieved utilizing operating-system kernel-threads. μC++ clarifies and extends object-oriented concurrency providing generality and functionality that surpasses languages like Ada, Java, and C#.

μC++ is implemented as a translator, u++, that reads a program containing the extensions and transforms each extension into one or more C++ statements, which are then compiled by an appropriate C++ compiler (currently only GNU C++) and linked with the μC++ concurrent runtime library. Currently, u++ runs on x86, x86_64, ia64 (Itanium), and SPARC, on Linux, FreeBSD, and Solaris systems.


Software


Theses/Papers

  • Understanding Control Flow with Concurrent Programming using μC++ (pdf) (ps.gz) by Peter A. Buhr
  • "Are Safe Concurrency Libraries Possible?" (pdf) (ps.gz) by Peter A. Buhr
  • "Monitor Classification" (pdf) (ps.gz) by Peter A. Buhr, Michel Fortier and Michael H. Coffin.
  • "μC++: Concurrency in the Object-Oriented Language C++" (pdf) (ps.gz) by Peter A. Buhr, Glen Ditchfield, R. A. Stroobosscher, B. M. Younger, and C. R. Zarnke
  • "Adding Concurrency to a Programming Language" (pdf) (ps.gz) by Peter A. Buhr and Glen Ditchfield
  • Concurrent Abnormal Event Handling Mechanisms (pdf) (ps.gz) by Russell Mok, M.Math Thesis
  • "Advanced Exception Handling Mechanisms" (pdf) (ps.gz) by Peter A. Buhr and W. Y. Russell Mok
  • The Application of Patterns to Concurrent Control Flow (pdf) (ps.gz) by Caroline Kierstead, M.Math Essay
  • Bound Exceptions in Object-Oriented Programming Languages (pdf) (ps.gz) by Roy Krischer, Diplomarbeit

Educational Material

Clone this wiki locally