HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Today, the C++ language remains one of the most important languages used by professional software developers. Many corporations and government agencies have large investments in applications that are developed using the C++ language. Those corporations and government agencies are now Web-enabling their applications. Applications that were originally developed as simple client/server now requires Internet/Intranet face-lifts. This book helps software developers and programmers who need to add the techniques of parallel and distributed programming to existing applications. Parallel programming uses multiple computers, or computers with multiple internal processors, to solve a problem at a greater computational speed than using a single computer. It also offers the opportunity to tackle larger problems; that is, problems with more computational steps or more memory requirements.
Combining User-Defined Inserters, Extractors, and Manipulators in C++
Predicates and Function Objects in C++
Simplifying Cluster (PVM and MPI) Application Programming Using Interface Classes: Part 2
Stream Manipulators and Iterators in C++
The Well-Crafted Class in C++: Part 1
User-Defined Extractors and Inserters in C++
Using Interface Classes To Simplify Cluster (PVM and MPI) Application Programming
Dividing C++ Programs into Multiple Threads
The Joys of Concurrent Programming
Download the Sample
Chapter related to this title.
Preface.
1. The Joys of Concurrent Programming.
What is Concurrency? The Benefits of Parallel Programming. The Benefits of Distributed Programming. The Minimal Effort Required. The Basic Layers of Software Concurrency. No Keyword Support for Parallelism in C++. Programming Environments for Parallel and Distributed Programming. Summary—Toward Concurrency.
The Big Paradigm Shift. Coordination Challenges. Sometimes Hardware Fails and Software Quits. Too Much Parallelization or Distribution Can Have Negative Consequences. Selecting a Good Architecture Requires Research. Different Techniques for Testing and Debugging are Required. The Parallel or Distributed Design Must Be Communicated. Summary.
Process: A Definition. Anatomy of a Process. Process States. Process Scheduling. Context Switching. Creating a Process. Terminating a Process. Process Resources. What are Asynchronous and Synchronous Processes? Dividing the Program into Tasks. Summary.
Threads: A Definition. The Anatomy of a Thread. Thread Scheduling. Thread Resources. Thread Models. Introduction to the Pthread Library. The Anatomy of a Simple Threaded Program. Creating Threads. Managing Threads. Thread Safety and Libraries. Dividing Your Program into Multiple Threads. Summary.
Coordinating Order of Execution. Synchronizing Access to Data. What are Semaphores? Synchronization: An Object-Oriented Approach. Summary.
The Classic Parallelism Models Supported by PVM. The PVM Library for C++. The Basic Mechanics of the PVM. Accessing Standard Input (stdin) and Standard Output (stdout) within PVM Tasks. Summary.
What is Software Reliability? Failures in Software Layers and Hardware Components. Definitions of Defects Depend on Software Specifications. Recognizing Where to Handle Defects versus Where to Handle Exceptions. Software Reliability: A Simple Plan. Using Map Objects in Error Handling. Exception Handling Mechanisms in C++. Event Diagrams, Logic Expressions, and Logic Diagrams. Summary.
Decomposition and Encapsulation of the Work. Accessing Objects in Other Address Spaces. The Anatomy of a Basic CORBA Consumer. The Anatomy of a CORBA Producer. The Basic Blueprint of a CORBA Application. The Naming Service. A Closer Look at Object Adapters. Implementation and Interface Repositories. Simple Distributed Web Services Using CORBA. The Trading Service. The Client/Server Paradigm. Summary.
Work Breakdown Structure for the MPI. Using Template Functions to Represent MPI Tasks. Simplifying MPI Communications. Summary.
Visualizing Structures. Visualizing Concurrent Behavior. Visualizing the Whole System. Summary.
Taking Advantage of Interface Classes. A Closer Look at Object-Oriented Mutual Exclusion and Interface Classes. Maintaining the Stream Metaphor. User-Defined Classes Designed to Work with PVM Streams. Object-Oriented Pipes and fifos as Low-Level Building Blocks. Framework Classes Components for Concurrency. Summary.
What are Agents? What is Agent-Oriented Programming? Basic Agent Components. Implementing Agents in C++. Multiagent Systems. Summary.
The Blackboard Model. Approaches to Structuring the Blackboard. The Anatomy of a Knowledge Source. The Control Strategies for Blackboards. Implementing the Blackboard Using CORBA Objects. Implementing the Blackboard Using Global Objects. Activating Knowledge Sources Using Pthreads. Summary.
Class and Object Diagrams. Interaction Diagrams. State Diagrams. Package Diagrams.
Download the Index
file related to this title.