The design of the UNIX operating system
The design of the UNIX operating system
Principles of parameterized programming
Software reusability: vol. 1, concepts and models
The art of metaobject protocol
The art of metaobject protocol
The SR programming language: concurrency in practice
The SR programming language: concurrency in practice
Scheduler activations: effective kernel support for the user-level management of parallelism
ACM Transactions on Computer Systems (TOCS)
Implementing a parallel C++ runtime system for scalable parallel systems
Proceedings of the 1993 ACM/IEEE conference on Supercomputing
Solaris multithreaded programming guide
Solaris multithreaded programming guide
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Towards a methodology for explicit composition of metaobjects
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Open implementation design guidelines
ICSE '97 Proceedings of the 19th international conference on Software engineering
Open implementation analysis and design
Proceedings of the 1997 symposium on Software reusability
Java Virtual Machine Specification
Java Virtual Machine Specification
Organizational Factors and Reuse
IEEE Software
Constructing Applications from Reusable Components
IEEE Software
Beyond the Black Box: Open Implementation
IEEE Software
Platform-Independent Runtime Optimizations Using OpenThreads
IPPS '97 Proceedings of the 11th International Symposium on Parallel Processing
A Metaobject Protocol for Controlling File Cache Management
ISOTAS '96 Proceedings of the Second JSSST International Symposium on Object Technologies for Advanced Software
The concert system--compiler and runtime support for efficient, fine-grained concurrent object-oriented programs
Hi-index | 0.00 |
Open Implementation Analysis and Design (OIA/D) has been introduced as a design methodology for object-oriented software systems, and in particular for substrate software. In this paper we detail our experiences with using OIA/D to design and implement a common substrate component for parallel language runtime systems: a lightweight threads package. We show how existing thread packages employ a "black-box" design, hiding crucial design decisions that drastically reduce their ability to be re-used. We detail these design decisions (dilemmas) and show how an implementation based on OIA/D principles results in a thread package that is flexible, efficient, portable, and re-usable.