Электронная библиотека Попечительского совета механико-математического факультета Московского государственного университета
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, POSIXR (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
Реклама