×

Uh-oh, it looks like your Internet Explorer is out of date.

For a better shopping experience, please upgrade now.

Introduction to Concurrency in Programming Languages / Edition 1
     

Introduction to Concurrency in Programming Languages / Edition 1

by Matthew J. Sottile, Timothy G. Mattson, Craig E Rasmussen
 

ISBN-10: 1420072137

ISBN-13: 9781420072136

Pub. Date: 10/07/2009

Publisher: Taylor & Francis

Exploring how concurrent programming can be assisted by language-level techniques, Introduction to Concurrency in Programming Languages presents high-level language techniques for dealing with concurrency in a general context. It provides an understanding of programming languages that offer concurrency features as part of the language definition.

The book

Overview

Exploring how concurrent programming can be assisted by language-level techniques, Introduction to Concurrency in Programming Languages presents high-level language techniques for dealing with concurrency in a general context. It provides an understanding of programming languages that offer concurrency features as part of the language definition.

The book supplies a conceptual framework for different aspects of parallel algorithm design and implementation. It first addresses the limitations of traditional programming techniques and models when dealing with concurrency. The book then explores the current state of the art in concurrent programming and describes high-level language constructs for concurrency. It also discusses the historical evolution of hardware, corresponding high-level techniques that were developed, and the connection to modern systems, such as multicore and manycore processors. The remainder of the text focuses on common high-level programming techniques and their application to a range of algorithms. The authors offer case studies on genetic algorithms, fractal generation, cellular automata, game logic for solving Sudoku puzzles, pipelined algorithms, and more.

Illustrating the effect of concurrency on programs written in familiar languages, this text focuses on novel language abstractions that truly bring concurrency into the language and aid analysis and compilation tools in generating efficient, correct programs. It also explains the complexity involved in taking advantage of concurrency with regard to program correctness and performance.

Product Details

ISBN-13:
9781420072136
Publisher:
Taylor & Francis
Publication date:
10/07/2009
Series:
Chapman & Hall/CRC Computational Science Series
Edition description:
New Edition
Pages:
344
Product dimensions:
6.40(w) x 9.30(h) x 1.00(d)

Table of Contents

Introduction

Motivation

Where does concurrency appear?

Why is concurrency considered hard?

Timeliness

Approach

Concepts in Concurrency

Terminology

Concepts

Concurrency Control

Correctness

Techniques

The State of the Art

Limitations of libraries

Explicit techniques

Higher-level techniques

The limits of explicit control

Concluding remarks

High-Level Language Constructs

Common high-level constructs

Using and evaluating language constructs

Implications of concurrency

Interpreted languages

Historical Context and Evolution of Languages

Evolution of machines

Evolution of programming languages

Limits to automatic parallelization

Modern Languages and Concurrency Constructs

Array abstractions

Message passing

Control flow

Functional languages

Functional operators

Performance Considerations and Modern Systems

Memory

Amdahl’s law, speedup, and efficiency

Locking

Thread overhead

Introduction to Parallel Algorithms

Designing parallel algorithms

Finding concurrency

Strategies for exploiting concurrency

Algorithm patterns

Patterns supporting parallel source code

Demonstrating parallel algorithm patterns

Pattern: Task Parallelism

Supporting algorithm structures

Case study: Genetic algorithms

Case study: Mandelbrot set computation

Pattern: Data Parallelism

Case study: Matrix multiplication

Case study: Cellular automaton

Limitations of SIMD data parallel programming

Beyond SIMD

Geometric decomposition

Pattern: Recursive Algorithms

Recursion concepts

Case study: Sorting

Case study: Sudoku

Pattern: Pipelined Algorithms

Pipelining as a software design pattern

Language support for pipelining

Case study: Pipelining in Erlang

Case study: Visual cortex

Appendix A: OpenMP Quick Reference

Appendix B: Erlang Quick Reference

Appendix C: Cilk Quick Reference

References

Customer Reviews

Average Review:

Post to your social network

     

Most Helpful Customer Reviews

See all customer reviews