Modern Multithreading : Implementing, Testing, and Debugging Multithreaded Java and C++/Pthreads/Win32 Programs

  title={Modern Multithreading : Implementing, Testing, and Debugging Multithreaded Java and C++/Pthreads/Win32 Programs},
  author={Richard H. Carver and Kuo-chung Tai},
This textbook examines languages and libraries for multithreaded programming. Readers learn how to create threads in Java and C++, and develop essential concurrent programming and problem-solving skills. Moreover, the textbook sets itself apart from other comparable works by helping readers to become proficient in key testing and debugging techniques. Among the topics covered, readers are introduced to the relevant aspects of Java, the POSIX Pthreads library, and the Windows Win32 Applications… 
A class library for implementing, testing, and debugging concurrent programs
  • R. Carver, Yu Lei
  • Computer Science
    International Journal on Software Tools for Technology Transfer
  • 2009
We describe the Modern Multithreading (MM) class library. MM is a class library consisting of thread and synchronization classes that provide significant support for testing and debugging
JNT - Java Native Thread for Win32 Platform
This research finding focuses on how Java can facilitate Win32 platform threads through JNI, which enables Java threads and native threads to schedule and execute in hybrid mode.
Analysis and Testing of Concurrent Programs
A methodology for deriving concurrency coverage metrics which measure how well the synchronisation and concurrency-related behaviour of tested programs has been examined is introduced and a novel use of stochastic optimisation algorithms in the area of concurrency testing is proposed.
A lock-free cache-friendly software queue buffer for decoupled software pipelining
A lock-free, cache-friendly software queue designed for DSWP, which shows how inattention to two different aspects of memory system, memory coherence and memory consistency, leads to incorrect or inefficient solutions.
A Modular Approach to Model-Based Testing of Concurrent Programs
A modular approach to testing concurrent programs that are modeled using labeled transition systems and shows that modular relations can be tested separately in order to verify a non-modular implementation relation for the complete system.
A systematic review of approaches for testing concurrent programs
An overview of research in the domain of testing concurrent programs is provided by classifying it into eight categories, which are focused on the techniques applied, methodologies followed, and tools used in these aforementioned approaches.
C to VHDL compiler
The main goal of C to VHDL compiler project is to make FPGA platform more accessible for scientists and software developers with the best approaches from existing solutions developed over many previous years, with the introduction of some new unique improvements.
Distributed reachability testing of concurrent programs
This paper presents the design and implementation of a distributed reachability testing algorithm for a cluster of workstations that allows different test sequences to be exercised concurrently by different workst stations without any synchronization, and without any duplication of sequences among workstation.
A Framework to Automatic Deadlock Detection in Concurrent Programs
This paper presents an approach to automatic deadlock detection using Bogor - a well known model checker, and determines global variables, shared resources and in general, all parts that may cause a deadlock.
Speeding Up FPGA Placement via Partitioning and Multithreading
A hybrid parallelization technique of the simulated annealing-based placement algorithm of VPR developed in the work of Betz and Rose (1997) is proposed, which achieves an average speedup of 25× using four worker threads, while the total wire length and circuit delay after routing are minimally degraded.


Eraser: a dynamic data race detector for multithreaded programs
A new tool, called Eraser, is described, for dynamically detecting data races in lock-based multithreaded programs, which uses binary rewriting techniques to monitor every shared-monory reference and verify that consistent locking behavior is observed.
Fixing the Java memory model
  • W. Pugh
  • Computer Science
    JAVA '99
  • 1999
This paper reviews issues and suggests replacement memory models for Java and concludes that programming idioms used by some programmers and used within Sun’s Java Development Kit is not guaranteed to be valid according to the existing Java memory model.
Java Thread Programming
From the Publisher: Java Thread Programming shows you how to take full advantage of Java's thread facilities: when to use threads to increase your program's efficiency, how to use them effectively,
Programming with POSIX threads
This book offers an in-depth description of the IEEE operating system interface standard, POSIXAE (Portable Operating System Interface) threads, commonly called Pthreads, and explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization.
Concurrent Programming: The Java Programming Language
  • G. Gagne
  • Computer Science
    Scalable Comput. Pract. Exp.
  • 2001
Stephen J. Hartley first provides a complete explanation of the features of Java necessary to write concurrent programs, including topics such as exception handling, interfaces, and packages, and takes a different approach than most Java references.
Deterministic replay of distributed Java applications
This paper describes the issues and presents the design, implementation and preliminary performance results of distributed Deja Vu that provides deterministic replay of distributed Java applications running on multiple JVMs.
A software instruction counter
It is shown that an instruction counter can be reasonably implemented in software, often with less than 10% execution overhead, and will make program instrumentation much easier for the system developer.
Debugging Concurrent Ada Programs by Deterministic Execution
A language-based approach to deterministic execution debugging of concurrent Ada programs is presented. The approach is to define synchronization (SYN)-sequences of a concurrent Ada program in terms
Replay and testing for concurrent programs
The purpose of deterministic execution debugging to to replay executions of a concurrent program so that debugging information can be collected and the process of designing replay tubes is described.
The programming language Concurrent Pascal
  • P. B. Hansen
  • Computer Science
    IEEE Transactions on Software Engineering
  • 1975
The main contribution of Concurrent Pascal is to extend the monitor concept with an explicit hierarchy of access rights to shared data structures that can be stated in the program text and checked by a compiler.