Àâòîðèçàöèÿ
Ïîèñê ïî óêàçàòåëÿì
Butenhof D.R. — Programming with POSIX threads
Îáñóäèòå êíèãó íà íàó÷íîì ôîðóìå
Íàøëè îïå÷àòêó? Âûäåëèòå åå ìûøêîé è íàæìèòå Ctrl+Enter
Íàçâàíèå: Programming with POSIX threads
Àâòîð: Butenhof D.R.
Àííîòàöèÿ: This book offers an in-depth description of the IEEE operating system interface standard, POSIX® (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset.
ßçûê:
Ðóáðèêà: Computer science /ßçûêè ïðîãðàììèðîâàíèÿ /
Ñòàòóñ ïðåäìåòíîãî óêàçàòåëÿ: Ãîòîâ óêàçàòåëü ñ íîìåðàìè ñòðàíèö
ed2k: ed2k stats
Ãîä èçäàíèÿ: 1997
Êîëè÷åñòâî ñòðàíèö: 381
Äîáàâëåíà â êàòàëîã: 11.11.2005
Îïåðàöèè: Ïîëîæèòü íà ïîëêó |
Ñêîïèðîâàòü ññûëêó äëÿ ôîðóìà | Ñêîïèðîâàòü ID
Ïðåäìåòíûé óêàçàòåëü
Abort thread 361
aio_read 230
aio_write 230
Allocation domain 181—183
Amdahl's Law 21—22 297
ANSIC and cancellation 151
ANSIC and deadlocks 298
ANSIC and destructor functions 168
ANSIC and fork handlers 199—200
ANSIC and kernel entities 189—190
ANSIC and priority inversions 300
ANSIC and sequence races 296
ANSIC and signals 217
ANSIC and threading 24—25
ANSIC prototype for Pthread interfaces 310—346
ANSIC, library, runtime 284
ANSIC, void*, use of 311 See
Apple Macintosh toolbox 23
asctime_r (function) 213 339—340
Assembly language and threading 24—25
Assembly line See Pipeline programming model
Async-signal safe functions 198 234
Asynchronous and UNIX 9—11. See also Memory visibility
Asynchronous cancelability 150—154 249
Asynchronous communication between processes 8
Asynchronous I/O operations 22—23
Asynchronous programming 8—12 15—21
Asynchronous sigwait 227—230
Asynchronous, definition of 2 4
atomicity 61 72—73 93
Attribute objects and detaching 37 43 231
Attribute objects, condition variable attributes 137—138
Attribute objects, definition of 134—135
Attribute objects, mutex attributes 135—136 185
Attribute objects, thread attributes 138—141 174 181 231
Bailing programmers, barriers analogy 242
Bailing programmers, cancellation analogy 143
Bailing programmers, condition variable analogy 71
Bailing programmers, mutex analogy 47—48
Bailing programmers, overview of 3—4
Bailing programmers, thread-specific data analogy 162—163
Barriers and synchronization, extended 242—253. See also Condition variables; Mutexes
Barriers, definition of 241
Barriers, memory 92—95
Barriers, POSIX 1003.1j 358
Blocking threads 42
Broadcast and condition variables 72—76 80—82
Broadcast and memory visibility 89
Broadcast and work crews 109
C language See ANSI C
Cache lines 304—305
Cancellation, asynchronous 150—154 249
Cancellation, cleanup handlers 147 154—161
Cancellation, deferred 147—150 249
Cancellation, definition of 142—147
Cancellation, fail-safe in POSIX 1003.1j 361
Cancellation, interfaces 323—325
Cancellation, points in XSH5 355—356
Cancellation, points, list of 147—148
Cancellation, state 143—144
Cancellation, type 143—144
Cleanup handlers 147 154—161
Client server programming model 120—129
clock_gettime (function) 13
CLOCK_MONOTONIC (value) 360
Code See Programs examples
Communication See Condition variables
Computing overhead and threads 26
Concurrency and parallelism 5—6
Concurrency, and thread implementation 190. See also Asynchronous; Threads
Concurrency, benefit of threading 22—24
Concurrency, control functions, definition of 7—8
Concurrency, definition of 4—5
Concurrency, level in XSH5 351—353
Concurrency, serialization, avoidance of 302—303
Condition variables and blocked threads 42
Condition variables and client-server programming model 121
Condition variables and pipeline programming model 101
Condition variables and semaphores 237
Condition variables and thread-safety 6—7
Condition variables and work crew programming model 107. See also Barriers; Mutexes; Predicates; Signals
Condition variables, as a synchronization mechanism 4 8 30 70—73
Condition variables, attributes 137—138
Condition variables, broadcasting 81—82
Condition variables, creating and destroying 74—76
Condition variables, definition of 8
Condition variables, interfaces 319—322
Condition variables, sharing, avoidance of 300
Condition variables, signaling 81—82
Condition variables, wait clock (POSIX 1003.1j) 359—361
Condition variables, waiting on 77—81
Condition variables, waking waiters 81—82
Contention scope 181—183
Context structure 6—7
critical sections 46
ctime_r (function) 213 340
DCE threads 154 290 353
Deadlocks and lock hierarchy 63—69
Deadlocks and signals 215
Deadlocks and thread-safe libraries 284—285. See also Priority inversions
Deadlocks, avoidance of 26—27 297—299
Debugging, threads, and costs of threading 13 27—28
Debugging, threads, cache lines 304—305
Debugging, threads, concurrent serialization, avoidance of 302—303
Debugging, threads, condition variable sharing, avoidance of 300
Debugging, threads, deadlocks, avoidance of 297—299
Debugging, threads, introduction to 13
Debugging, threads, memory corrupters, avoidance of 301
Debugging, threads, mutexes, right number of 303—304
Debugging, threads, priority inversions, avoidance of 299—300
Debugging, threads, thread inertia, avoidance of 291—293
Debugging, threads, thread race, avoidance of 293—297
Debugging, threads, tools for 290 302.
Default mutexes 349—351
Deferred cancelability 147—150 249
Destructor functions 167—172
Detach and multiple threads 17—19
Detach and thread attributes 138—141
Detach, creating and using threads 37—39
Detach, termination 43
Digital UNIX, detecting memory corrupters 301
Digital UNIX, mutex error detection and reporting 311
Digital UNIX, programming examples, introduction to 12—13
Digital UNIX, SIGEV-THREAD implementation 231
Digital UNIX, thread debugging library 290
Dijkstra, Edsger W. 47
Directory searching function 212
EAGAIN (error) 314 318 326 344 353
EBUSY (error) 49 58 65 318—321 345
EDEADLK (error) 32 318—319 346
EINTR (error) 346
EINVAL (error) 312—326 343—346 351—355
Encapsulation 24 75
ENOMEM (error) 313 317—321 326 336
ENOSPC (error) 345
ENOSYS (error) 312—316 344—346
ENXIO (error) 355
EOVERFLOW (error) 355
EPERM (error) 318 345
ERANGE (error) 210 341—342
errno 31—34 117 228
errno.h (header file) 32—33
errno_abort 33—34
Error detection and reporting 310—311
Errorcheck mutexes 349—351
Errors, EAGAIN 314 318 326 344 353
Errors, EBUSY 49 58 65 318—321 345
Errors, EDEADLK 32 318—319 346
Errors, EINTR 346
Errors, EINVAL 312—326 343—346 351—355
Errors, ENOMEM 313 317—321 326 336
Errors, ENOSPC 345
Errors, ENOSYS 312—316 344—346
Errors, ENXIO 355
Errors, EOVERFLOW 355
Errors, EPERM 318 345
Errors, ERANGE 210 341—342
Errors, ESPIPE 355
Errors, ESRCH 32 314 323 343
Errors, ETIMEDOUT 78 80 86 322
errors.h (header file) 13
err_abort 33—34
ESPIPE (error) 355
ESRCH (error) 32 314 323 343
ETIMEDOUT (error) 78 80 86 322
Events and concurrency 23—24
Events as a synchronization mechanism 8
exec 204
Execution context, architectural overview 30
Execution context, definition of 7—8
fgets (function) 14
flockfile (function) 121 205—207 336—337
Fork in asynchronous program 15 19
Fork, definition of 197—198
Fork, handlers 199—203 336
FTHREAD_MUTEX_DEFAULT (value) 349—351
ftrylockfile (function) 207 337
funlockfile (function) 121 205—207 337
Gallmeister, Bill 294
getc (function) 207
getchar (function) 207
getchar_unlocked (function) 207—209 338
getc_unlocked (function) 207—208 337
getgrgid_r (function) 341
getgrnam_r (function) 341
getlogin_r (function) 210 339
getpwnam_r (function) 342
getpwuid_r (function) 342
gmtime_r (function) 340
Group and user database function 213—214
Hard realtime 172—173
I/O operations and blocked threads 42
I/O operations and cancellation points 148—149
I/O operations and concurrency 22—23
I/O operations, candidate for threads 29
I/O operations, parallel in XSH5 354—355
inheritsched (attribute) 138—141 176
Initial (main) thread and creation 40—42
Initial (main) thread, initialization, onetime 131—134
Initial (main) thread, overview of 36—37
Initial (main) thread, signal mask 216
Initialization 131—134
Invariants and condition variables 71 75
Invariants and mutexes 61—64. See also Predicates
Invariants, definition of 45—46
Join 37—39 139 145
JPOSIX_THREAD_ATTR_STACKSIZE (option) 139 308 348
Kernel entities and contention scope thread 182
Kernel entities, implementation of 189
Kernel entities, many to few (two level) 193—195
Kernel entities, many to one (user level) 190—191
Kernel entities, one to one (kernel level) 191—193
Kernel entities, setting in XSH5 351—353
Libraries for debugging 290
Libraries, implementation 190
Libraries, legacy 285—287
Libraries, thread-safe 283—285
Light weight processes 1
limits.h (file header) 308
localtime_r (function) 340
LWP See Kernel entities
Main (initial) thread and creation 40—42
Main (initial) thread, initialization, one time 131—134
Main (initial) thread, overview of 36—37
Main (initial) thread, signal mask 216
Many to few (two level) implementation 193—195
Many to one (user level) implementation 190—191
Memory, barriers 92—95
Memory, coherence 47 92
Memory, conflict 94
Memory, corrupters, avoidance of 301
Memory, leaks 198
Memory, ordering 48 90 92—93
Memory, stack guard size in XSH5 353—354
Memory, visibility 26 88—95 294
Message queues 30
Microsoft Windows 23
MIMD (multiple instruction, multiple data) 107
MPP (Massively Parallel Processor) 5
Multiprocessors and allocation domain 182
Multiprocessors and concurrency 1 4—5
Multiprocessors and deadlock 65
Multiprocessors and parallelism 5—6 20—22
Multiprocessors and thread implementation 191—193
Multiprocessors and thread inertia 291—293
Multiprocessors and thread race 293—297
Multiprocessors, candidate for threads 29
Multiprocessors, definition of 5
Multiprocessors, memory architecture 91—95
Multithreaded programming model See Threads
Mutexes and atomicity 61 72—73
Mutexes and blocked threads 42 51
Mutexes and client-server programming model 121
Mutexes and deadlocks 26—27 63 66—69 297—299
Mutexes and invariants 61—64
Mutexes and pipeline programming model 100—101
Mutexes and thread-safety 6—7 62
Mutexes and work crew programming model 108—110. See also Barriers; Condition variables; Memory visibility;
Mutexes, and semaphores 236
Mutexes, as a synchronization mechanism 8 30
Mutexes, attributes 135—136
Mutexes, creating and destroying 49—51
Mutexes, definition of 8 47—49
Mutexes, interfaces 316—319
Mutexes, lock chaining 70
Mutexes, lock hierarchy 63—70
Mutexes, locking and unlocking 52—58
Mutexes, multiple, use of 63—64
Mutexes, non-blocking locks 58—61
Mutexes, number of 303—304
Mutexes, priority ceiling 186—187 300
Mutexes, priority inheritance 186—188 300 307
Mutexes, priority inversions 26—27 63 184—186 299—300
Mutexes, priority-aware 185—186
Mutexes, sizing of 62—63
Mutexes, types in XSH5 349—351
Mutually exclusive See Mutexes
Network servers and clients 22—23
Normal mutexes 349—351
NULL (value) 167
Object oriented programming and threading 25
One to one (kernel level) implementation 191—193
opaque 31 36 163
Open Software Foundation's Distributed Computing Environment 154
Paradigms 25
Parallel decomposition See Work crews
Parallelism and asynchronous programming 11—12
Parallelism and thread-safety 6—7. See also Concurrency
Parallelism, benefit of threading 20—25
Parallelism, candidate for threads 29
Parallelism, definition of 5—6
Performance and mutexes 62—63
Performance as a benefit of threading 20—22
Performance as a cost of threading 26
Performance, problems, avoidance of 302—305
Pipeline programming model 97—105
Pipes 30
Polymorphism 24
POSIX 1003, 1 (ISO/IEC 9945-1:1996) 29—30
POSIX 1003, 1-1990 31 209
Ðåêëàìà