Results 1 -
7 of
7
Threads cannot be implemented as a library
- In PLDI
, 2005
"... threads, library, register promotion, compiler optimization, garbage collection In many environments, multi-threaded code is written in a language that was originally designed without thread support (e.g. C), to which a library of threading primitives was subsequently added. There appears to be a ge ..."
Abstract
-
Cited by 51 (3 self)
- Add to MetaCart
threads, library, register promotion, compiler optimization, garbage collection In many environments, multi-threaded code is written in a language that was originally designed without thread support (e.g. C), to which a library of threading primitives was subsequently added. There appears to be a general understanding that this is not the right approach. We provide specific arguments that a pure library approach, in which the compiler is designed independently of threading issues, cannot guarantee correctness of the resulting code. We first review why the approach almost works, and then examine some of the surprising behavior it may entail. We further illustrate that there are very simple cases in which a pure library-based approach seems incapable of expressing an efficient parallel algorithm. Our discussion takes place in the context of C with Pthreads, since it is commonly used, reasonably well specified, and does not attempt to ensure type-safety, which would entail even stronger constraints. The issues we raise are not specific to that context.
Advanced Exception Handling Mechanisms
, 2000
"... It is no longer possible to consider exception handling as a secondary issue in language design, or even worse, a mechanism added after the fact via a library approach. Exception handling is a primary feature in language design and must be integrated with other major features, including advanced con ..."
Abstract
-
Cited by 20 (0 self)
- Add to MetaCart
It is no longer possible to consider exception handling as a secondary issue in language design, or even worse, a mechanism added after the fact via a library approach. Exception handling is a primary feature in language design and must be integrated with other major features, including advanced control flow, objects, coroutines, concurrency, realtime and polymorphism. Integration is crucial as there are both obvious and subtle interactions between exception handling and other language features. Unfortunately, many exception handling mechanisms work only with a subset of the features and in the sequential domain. A framework for a comprehensive, easy to use, and extensible exception handling mechanism is presented for a concurrent, object-oriented environment. The environment includes language constructs with separate execution stacks, e.g., coroutines and tasks, so the exception environment is significantly more complex than the normal single-stack situation. The pros and cons of various exception features are examined, along with feature interaction with other language mechanisms. Both exception termination and resumption models are examined in this environment, and previous criticisms of the resumption model, a feature commonly missing in modern languages, are addressed. Index Terms---Exception handling, robustness, termination, resumption, concurrent, interrupts, object-oriented. 1
On implementing high level concurrency in java
- In Proceedings of the Eighth Asia-Pacific Computer Systems Architecture Conference
, 2003
"... Abstract. Increasingly threading has become an important architectural component of programming languages to support parallel programming. Previously we have proposed an elegant language extension to express concurrency and synchronization. This language called Join Java has all the expressiveness o ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
Abstract. Increasingly threading has become an important architectural component of programming languages to support parallel programming. Previously we have proposed an elegant language extension to express concurrency and synchronization. This language called Join Java has all the expressiveness of Object Oriented languages whilst offering the added benefit of superior synchronization and concurrency semantics. Join Java incorporates asynchronous method calls and message passing. Synchronisation is expressed by a conjunction of method calls that execute associated code only when all parts of the condition are satisfied. A prototype of the Join Java language extension has been implemented using a fully functional Java compiler allowing us to illustrate how the extension preserves Join semantics within the Java language. This paper reviews the issues surrounding the addition of Join calculus constructs to an Object Oriented language and our implementation with Java. We describe how, whilst the Join calculus is non-deterministic, a form of determinism can and should be specified in Join Java. We explain the need for a sophisticated yet fast pattern matcher to be present to support the Join Java compiler. We also give reasons why inheritance of Join patterns is restricted in our initial implementation. 1
A.: C++ and the perils of double-checked locking
"... Multithreading is just one damn thing after, before, or simultaneous with another. 1 ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Multithreading is just one damn thing after, before, or simultaneous with another. 1
Run-Time Support for Parallel Discrete Event Simulation Languages
, 1996
"... Parallel computers offer the ability to reduce the run-time of large and complex discrete event simulations. Most research into Parallel Discrete Event Simulation (PDES) is based on libraries for existing languages, such as C and C++. This library-based approach exposes the user to the synchronis ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Parallel computers offer the ability to reduce the run-time of large and complex discrete event simulations. Most research into Parallel Discrete Event Simulation (PDES) is based on libraries for existing languages, such as C and C++. This library-based approach exposes the user to the synchronisation protocols used to ensure that events are processed in the correct order, and produces simulators that are less expressive than simulation-oriented languages (for example, Simula and MODSIM II). The use of a simulation-oriented language for PDES allows the synchronisation protocols to be hidden from the user and enables optimisations to be performed that are usually difficult or cumbersome, such as granularity control. A simulation-oriented language could therefore improve the usability of PDES, the lack of which has generally inhibited its widespread take-up. This thesis focuses on the run-time support needed for simulation-oriented languages for PDES using a new language cal...
C∀, a Study in Evolutionary Design in Programming Languages
, 2004
"... New programming languages appear constantly. Many of them are based on existing ones but differ sufficiently so they are incompatible (e.g., C/C++ and Java). Building on the C8 language (Ditchfield [47] and Bilson [16]), this thesis continues the C8 "evolutionary" approach to programming language de ..."
Abstract
- Add to MetaCart
New programming languages appear constantly. Many of them are based on existing ones but differ sufficiently so they are incompatible (e.g., C/C++ and Java). Building on the C8 language (Ditchfield [47] and Bilson [16]), this thesis continues the C8 "evolutionary" approach to programming language design based upon the very successful C programming language, preserving its syntax and semantics while extending it with features that considerably enhance its expressiveness. The evolutionary approach allows for the introduction of powerful abstraction mechanisms with minimal disruption to legacy code, truly "making the future safe for the past" [20]...

