Introduction to concurrency in programming languages:
Gespeichert in:
Hauptverfasser: | , , |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Boca Raton, Fla. [u.a.]
CRC Press
2010
|
Schriftenreihe: | Chapman & Hall/CRC computational science series
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | IX, 330 S. Ill., graph. Darst. |
ISBN: | 9781420072136 1420072137 |
Internformat
MARC
LEADER | 00000nam a2200000zc 4500 | ||
---|---|---|---|
001 | BV036054806 | ||
003 | DE-604 | ||
005 | 20210909 | ||
007 | t | ||
008 | 100301s2010 xxuad|| |||| 00||| eng d | ||
010 | |a 2009031462 | ||
015 | |a GBA9A7653 |2 dnb | ||
020 | |a 9781420072136 |c hardcover : alk. paper |9 978-1-4200-7213-6 | ||
020 | |a 1420072137 |c hardcover : alk. paper |9 1-4200-7213-7 | ||
035 | |a (OCoLC)172980303 | ||
035 | |a (DE-599)BVBBV036054806 | ||
040 | |a DE-604 |b ger |e aacr | ||
041 | 0 | |a eng | |
044 | |a xxu |c US | ||
049 | |a DE-20 |a DE-11 |a DE-703 |a DE-355 | ||
050 | 0 | |a QA76.7 | |
082 | 0 | |a 005.2/75 | |
084 | |a ST 151 |0 (DE-625)143595: |2 rvk | ||
084 | |a ST 240 |0 (DE-625)143625: |2 rvk | ||
084 | |a ST 300 |0 (DE-625)143650: |2 rvk | ||
100 | 1 | |a Sottile, Matthew J. |e Verfasser |4 aut | |
245 | 1 | 0 | |a Introduction to concurrency in programming languages |c Matthew J. Sottile ; Timothy G. Mattson ; Craig E. Rasmussen |
246 | 1 | 3 | |a Concurrency in programming languages |
264 | 1 | |a Boca Raton, Fla. [u.a.] |b CRC Press |c 2010 | |
300 | |a IX, 330 S. |b Ill., graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Chapman & Hall/CRC computational science series | |
650 | 4 | |a Programming languages (Electronic computers) | |
650 | 4 | |a Parallel processing (Electronic computers) | |
650 | 0 | 7 | |a Nebenläufigkeit |0 (DE-588)4115352-2 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Programmiersprache |0 (DE-588)4047409-4 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Programmiersprache |0 (DE-588)4047409-4 |D s |
689 | 0 | 1 | |a Nebenläufigkeit |0 (DE-588)4115352-2 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Mattson, Timothy G. |d 1958- |e Verfasser |0 (DE-588)142481394 |4 aut | |
700 | 1 | |a Rasmussen, Craig E. |e Verfasser |4 aut | |
856 | 4 | 2 | |m Digitalisierung UB Bayreuth |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=018946411&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-018946411 |
Datensatz im Suchindex
_version_ | 1804141094732038144 |
---|---|
adam_text | Contents
Introduction
1
1.1 Motivation ............................
З
1.1.1
Navigating the concurrency sea
............. 3
1.2
Where does concurrency appear?
............... 6
1.3
Why is concurrency considered hard?
............. 9
1.3.1
Real-world concurrency
................. 9
1.4
Timeliness
............................ 11
1.5
Approach
............................. 12
1.5.1
Intended audience
.................... 13
1.5.2
Acknowledgments
.................... 14
1.6
Exercises
............................. 14
Concepts in Concurrency
17
2.1
Terminology
........................... 19
2.1.1
Units of execution
.................... 19
2.1.2
Parallelism versus concurrency
............. 23
2.1.3
Dependencies and parallelism
.............. 25
2.1.4
Shared versus distributed memory
........... 28
2.2
Concepts
............................. 29
2.2.1
Atomicity
......................... 30
2.2.2
Mutual exclusion and critical sections
......... 34
2.2.3
Coherence and consistency
............... 36
2.2.4
Thread safety
....................... 38
2.3
Exercises
............................. 40
Concurrency Control
43
3.1
Correctness
............................ 44
3.1.1
Race conditions
...................... 44
3.1.2
Deadlock
......................... 46
3.1.3
Liveness, starvation and fairness
............ 49
3.1.4
Nondeterminism
..................... 51
3.2
Techniques
............................ 52
3.2.1
Synchronization
..................... 52
3.2.2
Locks
........................... 54
3.2.3
Semaphores
........................ 56
3.2.4
Monitors
......................... 57
3.2.5
Transactions
....................... 60
Contents
3.3
Exercises
............................. 62
The State of the Art
65
4.1
Limitations of libraries
..................... 66
4.2
Explicit techniques
....................... 69
4.2.1
Message passing
..................... 69
4.2.2
Explicitly controlled threads
............... 75
4.3
Higher-level techniques
..................... 76
4.3.1
Transactional memory
.................. 77
4.3.2
Event-driven programs
.................. 78
4.3.3
The Actor model
..................... 79
4.4
The limits of explicit control
.................. 80
4.4.1
Pointers and aliasing
................... 81
4.5
Concluding remarks
....................... 82
4.6
Exercises
............................. 83
High-Level Language Constructs
85
5.1
Common high-level constructs
................. 88
5.1.1
Expressions
........................ 89
5.1.2
Control flow primitives
.................. 91
5.1.3
Abstract types and data structures
........... 92
5.2
Using and evaluating language constructs
........... 94
5.2.1
Cognitive dimensions
................... 98
5.2.2
Working with the cognitive dimensions
......... 101
5.3
Implications of concurrency
................... 102
5.3.1
Sequential constructs and concurrency
......... 103
5.4
Interpreted languages
...................... 104
5.5
Exercises
............................. 106
Historical Context and Evolution of Languages
109
6.1
Evolution of machines
......................
Ill
6.1.1
Multiprogramming and interrupt driven I/O
.....
Ill
6.1.2
Cache-based memory hierarchies
............ 112
6.1.3
Pipelining and vector processing
............ 113
6.1.4
Dataflow
......................... 114
6.1.5
Massively parallel computers
.............. 115
6.1.6
Clusters and distributed memory systems
....... 117
6.1.7
Integration
........................ 118
6.1.8
Flynn s taxonomy
.................... 118
6.2
Evolution of programming languages
............. 120
6.2.1
In the beginning, there was FORTRAN
........ 120
6.2.2
The ALGOL family
................... 122
6.2.3
Coroutines
........................ 125
6.2.4
CSP and process algebras
................ 125
6.2.5
Concurrency in Ada
................... 128
Contents
vii
6.2.6
Declarative
and functional languages
.......... 131
6.2.7
Parallel languages
.................... 138
6.2.8
Modern languages
.................... 144
6.3
Limits to automatic parallelization
............... 145
6.4
Exercises
............................. 147
Modern Languages and Concurrency Constructs
149
7.1
Array abstractions
........................ 150
7.1.1
Array notation
...................... 152
7.1.2
Shifts
........................... 155
7.1.3
Index sets and regions
.................. 157
7.2
Message passing
......................... 158
7.2.1
The Actor model
..................... 160
7.2.2
Channels
......................... 160
7.2.3
Co-arrays
......................... 161
7.3
Control flow
........................... 163
7.3.1
ALGOL collateral clauses
................ 163
7.3.2
PAR, SEQ and ALT in occam
............. 164
7.3.3
Parallel loops
....................... 166
7.4
Functional languages
...................... 168
7.5
Functional operators
....................... 169
7.5.1
Discussion of functional operators
........... 171
7.6
Exercises
............................. 172
Performance Considerations and Modern Systems
175
8.1
Memory
.............................. 176
8.1.1
Architectural solutions to the performance problem
. . 177
8.1.2
Examining single threaded memory performance
. . . 178
8.1.3
Shared memory and cache coherence
.......... 180
8.1.4
Distributed memory as a deeper memory hierarchy
. . 185
8.2
Amdahl s law, speedup, and efficiency
............. 186
8.3
Locking
.............................. 188
8.3.1
Serialization
........................ 188
8.3.2
Blocking
.......................... 189
8.3.3
Wasted operations
.................... 190
8.4
Thread overhead
......................... 191
8.5
Exercises
............................. 194
Introduction to Parallel Algorithms
197
9.1
Designing parallel algorithms
.................. 198
9.2
Finding concurrency
....................... 199
9.3
Strategies for exploiting concurrency
.............. 200
9.4
Algorithm patterns
....................... 201
9.5
Patterns supporting parallel source code
........... 203
9.6
Demonstrating parallel algorithm patterns
.......... 204
viii Contents
9.7
Exercises
............................. 205
10
Pattern: Task Parallelism
207
10.1
Supporting algorithm structures
................ 208
10.1.1
The Master-worker pattern
............... 209
10.1.2
Implementation mechanisms
............... 210
10.1.3
Abstractions supporting task parallelism
........ 212
10.2
Case study: Genetic algorithms
................ 215
10.2.1
Population management
................. 218
10.2.2
Individual expression and fitness evaluation
...... 220
10.2.3
Discussion
......................... 221
10.3
Case study: Mandelbrot set computation
........... 222
10.3.1
The problem
....................... 222
10.3.2
Identifying tasks and separating master from worker
. 223
10.3.3
Cilk implementation
................... 226
10.3.4
OpenMP implementation
................ 229
10.3.5
Discussion
......................... 230
10.4
Exercises
............................. 230
11
Pattern: Data Parallelism
233
11.1
Data parallel algorithms
.................... 233
11.2
Case study: Matrix multiplication
............... 236
11.3
Case study: Cellular automaton
................ 238
11.4
Limitations of SIMD data parallel programming
....... 240
11.5
Beyond SIMD
.......................... 242
11.5.1
Approximating data parallelism with tasks
...... 243
11.6
Geometric Decomposition
.................... 244
11.7
Exercises
............................. 245
12
Pattern: Recursive Algorithms
247
12.1
Recursion concepts
....................... 248
12.1.1
Recursion and concurrency
............... 252
12.1.2
Recursion and the divide and conquer pattern
..... 253
12.2
Case study: Sorting
....................... 254
12.3
Case study: Sudoku
....................... 257
12.4
Exercises
............................. 261
13
Pattern: Pipelined Algorithms
263
13.1
Pipelining as a software design pattern
............ 265
13.2
Language support for pipelining
................ 266
13.3
Case study: Pipelining in
Erlang................ 267
13.3.1
Pipeline construction
................... 268
13.3.2
Pipeline stage structure
................. 269
13.3.3
Discussion
......................... 270
13.4
Case study: Visual cortex
.................... 272
Contents ix
13.4.1 PetaVision
code description
............... 274
13.5
Exercises
............................. 276
Appendix A OpenMP Quick Reference
279
A.I OpenMP fundamentals
..................... 280
A.
2
Creating threads and their implicit tasks
........... 280
A.3 OpenMP data environment
................... 282
A.
4
Synchronization and the OpenMP memory model
...... 285
A.
5
Work sharing
........................... 288
A.
6
OpenMP runtime library and environment variables
..... 291
A.
7
Explicit tasks and OpenMP
3.0 ................ 292
Appendix
В
Erlang
Quick Reference
295
B.I Language basics
......................... 295
B.2 Execution and memory model
................. 300
B.3 Message passing syntax
..................... 301
Appendix
С
Cilk Quick Reference
305
C.I Cilk keywords
.......................... 306
C.2 Cilk model
............................ 310
C.2.1 Work and span metrics
................. 310
C.2.
2
Memory model
...................... 311
C.3 Cilk standard library
...................... 312
C.4 Further information
....................... 314
References
315
Index
323
|
any_adam_object | 1 |
author | Sottile, Matthew J. Mattson, Timothy G. 1958- Rasmussen, Craig E. |
author_GND | (DE-588)142481394 |
author_facet | Sottile, Matthew J. Mattson, Timothy G. 1958- Rasmussen, Craig E. |
author_role | aut aut aut |
author_sort | Sottile, Matthew J. |
author_variant | m j s mj mjs t g m tg tgm c e r ce cer |
building | Verbundindex |
bvnumber | BV036054806 |
callnumber-first | Q - Science |
callnumber-label | QA76 |
callnumber-raw | QA76.7 |
callnumber-search | QA76.7 |
callnumber-sort | QA 276.7 |
callnumber-subject | QA - Mathematics |
classification_rvk | ST 151 ST 240 ST 300 |
ctrlnum | (OCoLC)172980303 (DE-599)BVBBV036054806 |
dewey-full | 005.2/75 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.2/75 |
dewey-search | 005.2/75 |
dewey-sort | 15.2 275 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02064nam a2200505zc 4500</leader><controlfield tag="001">BV036054806</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20210909 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">100301s2010 xxuad|| |||| 00||| eng d</controlfield><datafield tag="010" ind1=" " ind2=" "><subfield code="a">2009031462</subfield></datafield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">GBA9A7653</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781420072136</subfield><subfield code="c">hardcover : alk. paper</subfield><subfield code="9">978-1-4200-7213-6</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">1420072137</subfield><subfield code="c">hardcover : alk. paper</subfield><subfield code="9">1-4200-7213-7</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)172980303</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV036054806</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">aacr</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxu</subfield><subfield code="c">US</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-20</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-703</subfield><subfield code="a">DE-355</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.7</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.2/75</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 151</subfield><subfield code="0">(DE-625)143595:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 240</subfield><subfield code="0">(DE-625)143625:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 300</subfield><subfield code="0">(DE-625)143650:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Sottile, Matthew J.</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Introduction to concurrency in programming languages</subfield><subfield code="c">Matthew J. Sottile ; Timothy G. Mattson ; Craig E. Rasmussen</subfield></datafield><datafield tag="246" ind1="1" ind2="3"><subfield code="a">Concurrency in programming languages</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Boca Raton, Fla. [u.a.]</subfield><subfield code="b">CRC Press</subfield><subfield code="c">2010</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">IX, 330 S.</subfield><subfield code="b">Ill., graph. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Chapman & Hall/CRC computational science series</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Programming languages (Electronic computers)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Parallel processing (Electronic computers)</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Nebenläufigkeit</subfield><subfield code="0">(DE-588)4115352-2</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Programmiersprache</subfield><subfield code="0">(DE-588)4047409-4</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Programmiersprache</subfield><subfield code="0">(DE-588)4047409-4</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Nebenläufigkeit</subfield><subfield code="0">(DE-588)4115352-2</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Mattson, Timothy G.</subfield><subfield code="d">1958-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)142481394</subfield><subfield code="4">aut</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Rasmussen, Craig E.</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Bayreuth</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=018946411&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-018946411</subfield></datafield></record></collection> |
id | DE-604.BV036054806 |
illustrated | Illustrated |
indexdate | 2024-07-09T22:10:25Z |
institution | BVB |
isbn | 9781420072136 1420072137 |
language | English |
lccn | 2009031462 |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-018946411 |
oclc_num | 172980303 |
open_access_boolean | |
owner | DE-20 DE-11 DE-703 DE-355 DE-BY-UBR |
owner_facet | DE-20 DE-11 DE-703 DE-355 DE-BY-UBR |
physical | IX, 330 S. Ill., graph. Darst. |
publishDate | 2010 |
publishDateSearch | 2010 |
publishDateSort | 2010 |
publisher | CRC Press |
record_format | marc |
series2 | Chapman & Hall/CRC computational science series |
spelling | Sottile, Matthew J. Verfasser aut Introduction to concurrency in programming languages Matthew J. Sottile ; Timothy G. Mattson ; Craig E. Rasmussen Concurrency in programming languages Boca Raton, Fla. [u.a.] CRC Press 2010 IX, 330 S. Ill., graph. Darst. txt rdacontent n rdamedia nc rdacarrier Chapman & Hall/CRC computational science series Programming languages (Electronic computers) Parallel processing (Electronic computers) Nebenläufigkeit (DE-588)4115352-2 gnd rswk-swf Programmiersprache (DE-588)4047409-4 gnd rswk-swf Programmiersprache (DE-588)4047409-4 s Nebenläufigkeit (DE-588)4115352-2 s DE-604 Mattson, Timothy G. 1958- Verfasser (DE-588)142481394 aut Rasmussen, Craig E. Verfasser aut Digitalisierung UB Bayreuth application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=018946411&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Sottile, Matthew J. Mattson, Timothy G. 1958- Rasmussen, Craig E. Introduction to concurrency in programming languages Programming languages (Electronic computers) Parallel processing (Electronic computers) Nebenläufigkeit (DE-588)4115352-2 gnd Programmiersprache (DE-588)4047409-4 gnd |
subject_GND | (DE-588)4115352-2 (DE-588)4047409-4 |
title | Introduction to concurrency in programming languages |
title_alt | Concurrency in programming languages |
title_auth | Introduction to concurrency in programming languages |
title_exact_search | Introduction to concurrency in programming languages |
title_full | Introduction to concurrency in programming languages Matthew J. Sottile ; Timothy G. Mattson ; Craig E. Rasmussen |
title_fullStr | Introduction to concurrency in programming languages Matthew J. Sottile ; Timothy G. Mattson ; Craig E. Rasmussen |
title_full_unstemmed | Introduction to concurrency in programming languages Matthew J. Sottile ; Timothy G. Mattson ; Craig E. Rasmussen |
title_short | Introduction to concurrency in programming languages |
title_sort | introduction to concurrency in programming languages |
topic | Programming languages (Electronic computers) Parallel processing (Electronic computers) Nebenläufigkeit (DE-588)4115352-2 gnd Programmiersprache (DE-588)4047409-4 gnd |
topic_facet | Programming languages (Electronic computers) Parallel processing (Electronic computers) Nebenläufigkeit Programmiersprache |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=018946411&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT sottilematthewj introductiontoconcurrencyinprogramminglanguages AT mattsontimothyg introductiontoconcurrencyinprogramminglanguages AT rasmussencraige introductiontoconcurrencyinprogramminglanguages AT sottilematthewj concurrencyinprogramminglanguages AT mattsontimothyg concurrencyinprogramminglanguages AT rasmussencraige concurrencyinprogramminglanguages |