A Programming Language with Deterministic Multithreading
MetadataVis full innførsel
This report presents a programming language with deterministic multithreading and its compiler. The language demonstrates that when making IO and inter-thread communication sequential, most problems with multithreaded programming disappears, while most of the architectural and some of the performance benefits of multithreading are preserved. Much difficulty in modern programming is a result of insufficient abstraction, and while the popular embedded programming languages are unlikely to be replaced anytime soon, effort still has to be made to figure out the next step in the language evolution. In the language presented, there are also other changes meant to aid in the programming of critical systems besides determinism: Threads are written much like functions, dependencies between functions not contained in each other are explicit and arguments are distinguished by name, not sequence. Finally, threads and objects shared between threads are all visible in a single place.