A multi-threaded application is one which is capable of performing several tasks concurrently. This work describes the design and implementation of a user-level multi-thread extension to an environment for statistical data analysis based on the interactive, persistent, functional language S. These user-level threads are structured to utilize low level threads, native to the operating system. We outline some of the possible uses of this threaded environment in both single and multiple-processor machines and discuss extensions to the work which will allow the use of a network of machines for distributed computing. The implementations of user and internal functionality based on threads with other approaches are contrasted. We describe the programming interface to both the user level threads and synchronization mechanism. Finally, we outline the design of the internal structures that control the run-time behavior of these threads.The work here represents low level primitive facilities for an environment such as S to support threads. The ideas can be generalized to other languages such as Matlab, Xlisp-Stat, etc. Also, future work can capitalize on these primitives to further simplify the development of threaded algorithms and applications. These primitives have been implemented in the newest version of the S environment and language created by Lucent Technologies, Bell Labs Innovations.
Recommendations
A new concurrency control mechanism for multi-threaded environment using transactional memory
Software transactional memory (STM) is one of the techniques used towards achieving non-blocking process synchronization in multi-threaded computing environment. In spite of its high potential, one of the major limitations of transactional memory (TM) ...
Automatic repair for multi-threaded programs with Deadlock/Livelock using maximum satisfiability
ISSTA 2014: Proceedings of the 2014 International Symposium on Software Testing and AnalysisDeadlock-freedom is a major challenge in developing multi-threaded programs, as a deadlock cannot be resolved until one restarts the program (mostly by using manual intervention). To avoid the risk of blocking, a program may use the trylock operations ...
A multi-threaded object-oriented programming model
This paper presents a concurrent object-oriented programming (COOP) model established around concurrent objects which may have a body. Once an object with a body is created, its body begins to run as a separate execution thread of the object. ...
