Àâòîðèçàöèÿ
Ïîèñê ïî óêàçàòåëÿì
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
Ïðåäìåòíûé óêàçàòåëü
POSIX 1003, 14 (multiprocessor profile) 30 182 361—362
POSIX 1003, 1b-1993 (realtime) and condition variables 3.94 80
POSIX 1003, 1b-1993 (realtime) and semaphores 236—237 345
POSIX 1003, 1b-1993 (realtime) and signals 230—232
POSIX 1003, 1b-1993 (realtime), thread concepts 29—30
POSIX 1003, 1b-1993 (realtime), void *, use of 311
POSIX 1003, 1c-1995 (threads) and cancellation 154
POSIX 1003, 1c-1995 (threads) and realtime scheduling 173
POSIX 1003, 1c-1995 (threads), cancellation, interfaces 323—325
POSIX 1003, 1c-1995 (threads), condition variables, interfaces 319—322
POSIX 1003, 1c-1995 (threads), error detection and reporting 310—311
POSIX 1003, 1c-1995 (threads), fork handlers, interfaces 336
POSIX 1003, 1c-1995 (threads), interfaces, overview 309—310
POSIX 1003, 1c-1995 (threads), limits 308—309
POSIX 1003, 1c-1995 (threads), mutexes, interfaces 316—319
POSIX 1003, 1c-1995 (threads), options 307—308
POSIX 1003, 1c-1995 (threads), realtime scheduling, interfaces 326—335
POSIX 1003, 1c-1995 (threads), semaphores, interfaces 345—346
POSIX 1003, 1c-1995 (threads), signals, interfaces 342—345
POSIX 1003, 1c-1995 (threads), stdio, interfaces 336—338
POSIX 1003, 1c-1995 (threads), thread concepts 29—30
POSIX 1003, 1c-1995 (threads), thread-safe, interfaces 338—342
POSIX 1003, 1c-1995 (threads), thread-specific data, interfaces 325—326
POSIX 1003, 1c-1995 (threads), threads, interfaces 311—316
POSIX 1003, 1c-1995 (threads), void *, use of 311
POSIX 1003, 1j (additional realtime extension), barriers 249 356—358
POSIX 1003, 1j (additional realtime extension), read/write locks 358
POSIX 1003, 1j (additional realtime extension), spinlocks 359
POSIX 1003, 1j (additional realtime extension), thread abort 361
POSIX 1003, 1j (additional realtime extension), wait clock, condition variable 359—361
POSIX 1003. li-1995 (corrections to 1003, 1b-1993) 29—30
POSIX, architectural overview 30
POSIX, conformance document 307 308
POSIX, error checking 31—34
POSIX, realtime scheduling options 173
POSIX, signal mechanisms 40—41 81—82
POSIX, types and interfaces 30—31
POSIX_PRIOJNHERIT 186
POSIX_PRIO_NONE (value) 186
POSIX_PRIO_PROTECT 186
pread (function) 354—355
Predicates, definition of 46
Predicates, loose 80
Predicates, wakeup 80—81
Predicates, waking waiters 81. See also Condition variables
printf (function) 15
prioceiling (attribute) 135—138
Priority ceiling 186—187 300
Priority inheritance and POSIX 1003.1c options 307
Priority inheritance, definition of 186
Priority inheritance, mutexes 188
Priority inheritance, priority inversion, avoidance of 300
Priority inversions, as a cost of threading 26—27
Priority inversions, as a realtime scheduling problem 184. See also Deadlocks
Priority inversions, avoidance of 299—300
Priority inversions, mutexes and priority scheduling 63
Process contention 181—185
Process exit 204
Processes, asynchronous 8
Processes, lightweight 1
Processes, threads, compared to 10 20
Processes, variable weight 1
Processors and blocked threads 42
Processors and thread implementation 190—195. See also Multiprocessors; Uniprocessors
Programs, examples of barriers 245—248 250—253
Programs, examples of cancellation 145—161
Programs, examples of client server 121—129
Programs, examples of condition variables, creating and destroying 74—76
Programs, examples of condition variables, timed condition wait 83—88
Programs, examples of condition variables, waiting on 78—80
Programs, examples of creating and using threads 38—39
Programs, examples of errors 32—34
Programs, examples of flockfile 205—207
Programs, examples of fork handlers 201—203
Programs, examples of initialization 133—134
Programs, examples of multiple processes 15—16
Programs, examples of multiple threads 17—19
Programs, examples of mutex attributes object 136
Programs, examples of mutexes, deadlock avoidance 66—69
Programs, examples of mutexes, dynamic 50—68
Programs, examples of mutexes, locking and unlocking 52—57
Programs, examples of mutexes, non-blocking locks 58—61
Programs, examples of mutexes, static mutex 50
Programs, examples of pipeline 99—105
Programs, examples of putchar 208—209
Programs, examples of read/write locks 255—269
Programs, examples of realtime scheduling 175—181
Programs, examples of sample information 13
Programs, examples of semaphore 238—240
Programs, examples of SIGEV_THREAD 232—234
Programs, examples of sigwait 228—230
Programs, examples of suspend and resume 218—227
Programs, examples of synchronous programming 13—15 27
Programs, examples of thread attributes 140—141
Programs, examples of thread inertia 292
Programs, examples of thread-specific 164—165 169—172
Programs, examples of user and terminal identification 211
Programs, examples of work crews 108—120
Programs, examples of work queue manager 271—283
protocol (attribute) 135—138 186
pshared (attribute) 135—138 204
pthread.h (header file) 13
PTHREADJEXPLICITJSCHED (value) 176 327—329
PTHREADJNHERIT_SCHED (value) 176 327—329
pthreadjoin (function) and attributes objects 139
pthreadjoin (function) and error checking 32
pthreadjoin (function) and memory visibility 89
pthreadjoin (function) and pthread_kill 225
pthreadjoin (function), cleaning up 158
pthreadjoin (function), creating and using threads 37—38
pthreadjoin (function), definition of 315
pthreadjoin (function), termination 43—44 128 145
pthread_abort (function) 361
pthread_atfork (function) 199 336
pthread_attr_destroy (function) 312
pthread_attr_getdetachstate (function) 312
pthread_attr_getguardsize (function) 353
pthread_attr_getinheritsched (function) 327
pthread_attr_getschedparam (function) 327
pthread_attr_getschedpolicy (function) 327—328
pthread_attr_getscope (function) 328
pthread_attr_getstackaddr (function) 312—313
pthread_attr_getstacksize (function) 135 139 313
pthread_attr_init (function) 139 313
pthread_attr_setdetachstate (function) 313
pthread_attr_setguardsize (function) 354
pthread_attr_setinheritsched (function) 176 329
pthread_attr_setschedparam (function) 175 329
pthread_attr_setschedpolicy (function) 175 329—330
pthread_attr_setscope (function) 182 330
pthread_attr_setstackaddr (function) 314
pthread_attr_setstacksize (function) 135 314
pthread_attr_t (datatype) 135 139 231
pthread_cancel (function) and pthreadjdll 217
pthread_cancel (function), asynchronous cancelability 151
pthread_cancel (function), deferred cancelability 148
pthread_cancel (function), definition of 323
pthread_cancel (function), termination 43 143—145
PTHREAD_CANCELED (value) 43 145
PTHREAD_CANCEL_ASYNCHRONOUS (value) 152 324
PTHREAD_CANCEL_DEFERRED (value) 145 147 324
PTHREAD_CANCEL_DISABLE (value) 145 149 324
PTHREAD_CANCEL_ENABLE (value) 147 324
pthread_cleanup_pop (function) 43 147 155 323
pthread_cleanup_push (function) 43 147 155 323
pthread_condattr_destroy (function) 319
pthread_condattr_getclock (function) 360
pthread_condattr_getpshared (function) 320
pthread_condattr_init (function) 137 320
pthread_condattr_setclock (function) 360
pthread_condattr_setpshared (function) 137 320
pthread_condattr_t (datatype) 135
pthread_cond_broadcast (function) 81 256 300 321
pthread_cond_destroy (function) 76 321
pthread_cond_init (function) 75 137 321
pthread_cond_signal (function) 81 300 322
pthread_cond_t (datatype) 74 137
pthread_cond_timedwait (function) 78 80 322
pthread_cond_wait (function) 77 85 322
pthread_create (function) and attributes objects 139
pthread_create (function) and multiple threads 17
pthread_create (function) and thread identifier 144—145 266
pthread_create (function), and memory visibility 89
pthread_create (function), creating and using threads 36—42 189
pthread_create (function), definition of 314
pthread_create (function), execution context 30
PTHREAD_CREATE_DETACHED (value) 44 125 139 231 312—313
PTHREAD_CREATE_JOINABLE (value) 139 231 312—313
PTHREAD_DESTRUCTORJTERATIONS (limit) 168 309
pthread_detach (function) and multiple threads 17
pthread_detach (function), cleaning up 158
pthread_detach (function), creating and using threads 37
pthread_detach (function), definition of 315
pthread_detach (function), termination 43—44
pthread_equal (function) 36 315
pthread_exit (function) and attributes objects 140
pthread_exit (function) and fork 197
pthread_exit (function) and memory visibility 89
pthread_exit (function) and multiple threads 17
pthread_exit (function), cleaning up 155
pthread_exit (function), creating and using threads 37—38
pthread_exit (function), definition of 204 315
pthread_exit (function), termination 30 40—44 53
pthread_getconcurrency (function) 352
pthread_getschedparam (function) 331
pthread_getspeciflc (function) 34 164 166 325
PTHREAD_KEYS_MAX (limit) 166 309
pthread_key_create (function) 163—166 325—326
pthread_key_delete (function) 166 326
pthread_key_t (datatype) 163—166
pthread_kill (function) 217—227 343
pthread_mutexattr_destroy (function) 316
pthread_mutexattr_getprioceiling (function) 332
pthread_mutexattr_getprotocol (function) 332—333
pthread_mutexattr_getpshared (function) 317
pthread_mutexattr_gettype (function) 350—351
pthread_mutexattr_init (function) 135 317
pthread_mutexattr_setprioceiling (function) 333
pthread_mutexattr_setprotocol (function) 186 333—334
pthread_mutexattr_setpshared (function) 136 317
pthread_mutexattr_settype (function) 351
pthread_mutexattr_t (datatype) 135
pthread_mutex_destroy (function) 51 318 350
PTHREAD_MUTEX_ERRORCHECK (value) 349
pthread_mutex_getprioceiling (function) 331
pthread_mutex_init (function) and attributes objects 135
pthread_mutex_init (function), creating and destroying mutexes 50—51
pthread_mutex_init (function), definition of 318
pthread_mutex_init (function), initialization of 132 186
pthread_mutex_init (function), standardization, future 350
PTHREAD_MUTEX_INITIALIZER (macro) 50—52 74—76
pthread_mutex_lock (function) and memory visibility 90 93
pthread_mutex_lock (function), asynchronous cancelability 151
pthread_mutex_lock (function), definition of 318
pthread_mutex_lock (function), lock hierarchy 64—65
pthread_mutex_lock (function), locking and unlocking 52 58
pthread_mutex_lock (function), mutexes, number of 303—304
pthread_mutex_lock (function), standardization, future 350
pthread_mutex_lock (function), XSHS mutex types 350
PTHREAD_MUTEX_NORMAL (value) 349
PTHREAD_MUTEX_RECURSIVE (value) 349
pthread_mutex_setprioceiling (function) 332
pthread_mutex_t (datatype) 49 62 136
pthread_mutex_trylock (function) and flockfile and funlockfile 207
pthread_mutex_trylock (function), creating and destroying mutexes 49
pthread_mutex_trylock (function), definition of 319
pthread_mutex_trylock (function), lock hierarchy 64—65
pthread_mutex_trylock (function), locking and unlocking 52 58
pthread_mutex_trylock (function), mutexes, number of 303—304
pthread_mutex_trylock (function), read/write locks 257
pthread_mutex_trylock (function), standardization, future 350
pthread_mutex_trylock (function), XSHS mutex types 350
pthread_mutex_unlock (function) and flockfile and funlockfile 207
pthread_mutex_unlock (function) and memory visibility 90
pthread_mutex_unlock (function), creating and destroying mutexes 49
pthread_mutex_unlock (function), definition of 319
pthread_mutex_unlock (function), lock hierarchy 64—65
pthread_mutex_unlock (function), locking and unlocking 52 58
pthread_mutex_unlock (function), mutexes, number of 303—304
pthread_mutex_unlock (function), standardization, future 350
pthread_mutex_unlock (function), XSHS mutex types 350
pthread_once (function) and thread races 295—296
pthread_once (function) in suspend/resume 220—221
pthread_once (function) or statically initialized mutex 132
pthread_once (function), initialization, condition variables 75
pthread_once (function), initialization, mutexes 50
pthread_once (function), thread-specific data 163—164
PTHREAD_ONCE_INIT (macro) 132
pthread_once_t (datatype) 132
PTHREAD_PRIOJNHERIT (value) 186 333—334
PTHREAD_PRIO_NONE (value) 333—334
PTHREAD_PRIO_PROTECT (value) 186 333—334
PTHREAD_PROCESS_PRTVATE (value) 136—137 317—320
PTHREAD_PROCESS_SHARED (value) 136—138 204 317—320
PTHREAD_SCOPE_PROCESS (value) 182 328—330
PTHREAD_SCOPE_SYSTEM (value) 182 328—330
pthread_self (function) 17 36—37 144—145 316
pthread_setcancelstate (function) 147 149 151 324
pthread_setcanceltype (function) 151 324
pthread_setconcurrency (function) 352—353
pthread_setschedparam (function) 334
pthread_setspecific (function) 166 326
pthread_sigmask (function) 215—216 343
pthread_spin_lock (function) 359
PTHREAD_STACK_MIN (limit) 139 309
pthread_t (datatype) and pthread_kill 217
pthread_t (datatype), creating and using threads 36—37 189 266
pthread_t (datatype), termination 43 144—145
pthread_t (datatype), thread-specific data 161—162
pthread_testcancel (function) 144—145 150 158 325
PTHREAD_THREAD_MAX (limit) 309
putc (function) 207
putchar (function) 6 207
putchar_unlocked (function) 207—209 338
putc_unlocked (function) 207—208 338
pwrite (function) 355
Races and condition variables 73
Races and memory visibility 91
Races, avoidance of 26—27
Races, overview 293—295
Races, raise (function) 217
Races, sequence race 284—285 295—297
Races, synchronization race 294—296
Races, thread inertia 291—293
Random number generation function 213
rand_r (function) 213 341
read/write locks 242 253—269 358
Read/write ordering 92—95
readdir_r (function) and work crews 107—109
readdir_r (function), definition of 339
readdir_r (function), directory searching 212
readdir_r (function), reentrancy 7 297
readdir_r (function), thread-safe function 210
Ready threads 39—42 53
Realtime scheduling and priority inversion 299—300 326
Realtime scheduling and synchronization 295
Realtime scheduling, allocation domain 181—183
Realtime scheduling, architectural overview 30
Realtime scheduling, contention scope 181—183
Realtime scheduling, definition of 7—8 172—173
Ðåêëàìà