Book description
Parallel and Distributed Programming Using C++ provides an up-close look at how to build software that can take advantage of multiprocessor computers. Simple approaches for programming parallel virtual machines are presented, and the basics of cluster application development are explained. Through an easy-to-understand overview of multithreaded programming, this book also shows you how to write software components that work together over a network to solve problems and do work.
Parallel and Distributed Programming Using C++ provides an architectural approach to parallel programming for computer programmers, software developers, designers, researchers, and software architects. It will also be useful for computer science students.
Demonstrates how agents and blackboards can be used to make parallel programming easier
Shows object-oriented approaches to multitasking and multithreading
Demonstrates how the UML is used to document designs that require parallel or distributed programming
Contains the new POSIX/UNIX IEEE Standard for the Pthreads library
Table of contents
- Copyright
- Preface
-
1. The Joys of Concurrent Programming
- 1.1. What is Concurrency?
- 1.2. The Benefits of Parallel Programming
- 1.3. The Benefits of Distributed Programming
- 1.4. The Minimal Effort Required
- 1.5. The Basic Layers of Software Concurrency
- 1.6. No Keyword Support for Parallelism in C++
- 1.7. Programming Environments for Parallel and Distributed Programming
- Summary—Toward Concurrency
-
2. The Challenges of Parallel and Distributed Programming
- 2.1. The Big Paradigm Shift
- 2.2. Coordination Challenges
- 2.3. Sometimes Hardware Fails and Software Quits
- 2.4. Too Much Parallelization or Distribution Can Have Negative Consequences
- 2.5. Selecting a Good Architecture Requires Research
- 2.6. Different Techniques for Testing and Debugging are Required
- 2.7. The Parallel or Distributed Design Must Be Communicated
- Summary
-
3. Dividing C++ Programs into Multiple Tasks
- 3.1. Process: A Definition
- 3.2. Anatomy of a Process
- 3.3. Process States
- 3.4. Process Scheduling
- 3.5. Context Switching
- 3.6. Creating a Process
- 3.7. Terminating a Process
- 3.8. Process Resources
- 3.9. What are Asynchronous and Synchronous Processes?
- 3.10. Dividing the Program into Tasks
- Summary
-
4. Dividing C++ Programs into Multiple Threads
- 4.1. Threads: A Definition
- 4.2. The Anatomy of a Thread
- 4.3. Thread Scheduling
- 4.4. Thread Resources
- 4.5. Thread Models
- 4.6. Introduction to the Pthread Library
- 4.7. The Anatomy of a Simple Threaded Program
- 4.8. Creating Threads
- 4.9. Managing Threads
- 4.10. Thread Safety and Libraries
- 4.11. Dividing Your Program into Multiple Threads
- Summary
- 5. Synchronizing Concurrency between Tasks
-
6. Adding Parallel Programming Capabilities to C++ Through the PVM
- 6.1. The Classic Parallelism Models Supported by PVM
- 6.2. The PVM Library for C++
- 6.3. The Basic Mechanics of the PVM
- 6.4. Accessing Standard Input (stdin) and Standard Output (stdout) within PVM Tasks
- Summary
-
7. Error Handling, Exceptions, and Software Reliability
- 7.1. What is Software Reliability?
- 7.2. Failures in Software Layers and Hardware Components
- 7.3. Definitions of Defects Depend on Software Specifications
- 7.4. Recognizing Where to Handle Defects versus Where to Handle Exceptions
- 7.5. Software Reliability: A Simple Plan
- 7.6. Using Map Objects in Error Handling
- 7.7. Exception Handling Mechanisms in C++
- 7.8. Event Diagrams, Logic Expressions, and Logic Diagrams
- Summary
-
8. Distributed Object-Oriented Programming in C++
- 8.1. Decomposition and Encapsulation of the Work
- 8.2. Accessing Objects in Other Address Spaces
- 8.3. The Anatomy of a Basic CORBA Consumer
- 8.4. The Anatomy of a CORBA Producer
- 8.5. The Basic Blueprint of a CORBA Application
- 8.6. The Naming Service
- 8.7. A Closer Look at Object Adapters
- 8.8. Implementation and Interface Repositories
- 8.9. Simple Distributed Web Services Using CORBA
- 8.10. The Trading Service
- 8.11. The Client/Server Paradigm
- Summary
- 9. SPMD and MPMD Using Templates and the MPI
- 10. Visualizing Concurrent and Distributed System Design
-
11. Designing Components That Support Concurrency
- 11.1. Taking Advantage of Interface Classes
- 11.2. A Closer Look at Object-Oriented Mutual Exclusion and Interface Classes
- 11.3. Maintaining the Stream Metaphor
- 11.4. User-Defined Classes Designed to Work with PVM Streams
- 11.5. Object-Oriented Pipes and fifos as Low-Level Building Blocks
- 11.6. Framework Classes Components for Concurrency
- Summary
- 12. Implementing Agent-Oriented Architectures
-
13. Blackboard Architectures Using PVM, Threads, and C++ Components
- 13.1. The Blackboard Model
- 13.2. Approaches to Structuring the Blackboard
- 13.3. The Anatomy of a Knowledge Source
- 13.4. The Control Strategies for Blackboards
- 13.5. Implementing the Blackboard Using CORBA Objects
- 13.6. Implementing the Blackboard Using Global Objects
- 13.7. Activating Knowledge Sources Using Pthreads
- Summary
- A. Diagrams
- B. System Interfaces
- Bibliography
Product information
- Title: Parallel and Distributed Programming Using C++
- Author(s):
- Release date: August 2003
- Publisher(s): Addison-Wesley Professional
- ISBN: None
You might also like
book
Joe Celko's Thinking in Sets: Auxiliary, Temporal, and Virtual Tables in SQL
Perfectly intelligent programmers often struggle when forced to work with SQL. Why? Joe Celko believes the …
book
Deciphering Data Architectures
Data fabric, data lakehouse, and data mesh have recently appeared as viable alternatives to the modern …
book
Fluent C
Expert advice on C programming is hard to find. While much help is available for object-oriented …
book
Joe Celko's SQL for Smarties, 5th Edition
SQL for Smarties was hailed as the first book devoted explicitly to the advanced techniques needed …