Parallel and Concurrent Programming in Haskell
Autor Simon Marlowen Limba Engleză Paperback – 17 sep 2013
Preț: 266.92 lei
Preț vechi: 333.65 lei
-20%
Puncte Express: 400
Carte tipărită la comandă
Livrare economică 17-31 octombrie
Livrare prin curier în România Termenul estimat este afișat lângă disponibilitate.
Transport gratuit de la 400.00 lei Plată online sau ramburs, în funcție de opțiunile comenzii.
Retur gratuit în 14 zile Comandă securizată și suport în română.
Specificații
ISBN-13: 9781449335946
ISBN-10: 1449335942
Pagini: 319
Ilustrații: illustrations (black and white)
Dimensiuni: 181 x 233 x 22 mm
Greutate: 0.55 kg
Editura: O'Reilly
ISBN-10: 1449335942
Pagini: 319
Ilustrații: illustrations (black and white)
Dimensiuni: 181 x 233 x 22 mm
Greutate: 0.55 kg
Editura: O'Reilly
Cuprins
Preface; Audience; How to Read This Book; Conventions Used in This Book; Using Sample Code; Safari® Books Online; How to Contact Us; Acknowledgments; Chapter 1: Introduction; 1.1 Terminology: Parallelism and Concurrency; 1.2 Tools and Resources; 1.3 Sample Code; Parallel Haskell; Chapter 2: Basic Parallelism: The Eval Monad; 2.1 Lazy Evaluation and Weak Head Normal Form; 2.2 The Eval Monad, rpar, and rseq; 2.3 Example: Parallelizing a Sudoku Solver; 2.4 Deepseq; Chapter 3: Evaluation Strategies; 3.1 Parameterized Strategies; 3.2 A Strategy for Evaluating a List in Parallel; 3.3 Example: The K-Means Problem; 3.4 GC'd Sparks and Speculative Parallelism; 3.5 Parallelizing Lazy Streams with parBuffer; 3.6 Chunking Strategies; 3.7 The Identity Property; Chapter 4: Dataflow Parallelism: The Par Monad; 4.1 Example: Shortest Paths in a Graph; 4.2 Pipeline Parallelism; 4.3 Example: A Conference Timetable; 4.4 Example: A Parallel Type Inferencer; 4.5 Using Different Schedulers; 4.6 The Par Monad Compared to Strategies; Chapter 5: Data Parallel Programming with Repa; 5.1 Arrays, Shapes, and Indices; 5.2 Operations on Arrays; 5.3 Example: Computing Shortest Paths; 5.4 Folding and Shape-Polymorphism; 5.5 Example: Image Rotation; 5.6 Summary; Chapter 6: GPU Programming with Accelerate; 6.1 Overview; 6.2 Arrays and Indices; 6.3 Running a Simple Accelerate Computation; 6.4 Scalar Arrays; 6.5 Indexing Arrays; 6.6 Creating Arrays Inside Acc; 6.7 Zipping Two Arrays; 6.8 Constants; 6.9 Example: Shortest Paths; 6.10 Example: A Mandelbrot Set Generator; Concurrent Haskell; Chapter 7: Basic Concurrency: Threads and MVars; 7.1 A Simple Example: Reminders; 7.2 Communication: MVars; 7.3 MVar as a Simple Channel: A Logging Service; 7.4 MVar as a Container for Shared State; 7.5 MVar as a Building Block: Unbounded Channels; 7.6 Fairness; Chapter 8: Overlapping Input/Output; 8.1 Exceptions in Haskell; 8.2 Error Handling with Async; 8.3 Merging; Chapter 9: Cancellation and Timeouts; 9.1 Asynchronous Exceptions; 9.2 Masking Asynchronous Exceptions; 9.3 The bracket Operation; 9.4 Asynchronous Exception Safety for Channels; 9.5 Timeouts; 9.6 Catching Asynchronous Exceptions; 9.7 mask and forkIO; 9.8 Asynchronous Exceptions: Discussion; Chapter 10: Software Transactional Memory; 10.1 Running Example: Managing Windows; 10.2 Blocking; 10.3 Blocking Until Something Changes; 10.4 Merging with STM; 10.5 Async Revisited; 10.6 Implementing Channels with STM; 10.7 An Alternative Channel Implementation; 10.8 Bounded Channels; 10.9 What Can We Not Do with STM?; 10.10 Performance; 10.11 Summary; Chapter 11: Higher-Level Concurrency Abstractions; 11.1 Avoiding Thread Leakage; 11.2 Symmetric Concurrency Combinators; 11.3 Adding a Functor Instance; 11.4 Summary: The Async API; Chapter 12: Concurrent Network Servers; 12.1 A Trivial Server; 12.2 Extending the Simple Server with State; 12.3 A Chat Server; Chapter 13: Parallel Programming Using Threads; 13.1 How to Achieve Parallelism with Concurrency; 13.2 Example: Searching for Files; Chapter 14: Distributed Programming; 14.1 The Distributed-Process Family of Packages; 14.2 Distributed Concurrency or Parallelism?; 14.3 A First Example: Pings; 14.4 Multi-Node Ping; 14.5 Typed Channels; 14.6 Handling Failure; 14.7 A Distributed Chat Server; 14.8 Exercise: A Distributed Key-Value Store; Chapter 15: Debugging, Tuning, and Interfacing with Foreign Code; 15.1 Debugging Concurrent Programs; 15.2 Tuning Concurrent (and Parallel) Programs; 15.3 Concurrency and the Foreign Function Interface; Colophon;