Go to main content
Index
Numbers and Symbols
- 32-bit architecturesProgramming with Synchronization Objects
- 64-bit environment
- /dev/kmemUsing the 64-bit Architecture
- /dev/memUsing the 64-bit Architecture
- /proc restrictionsUsing the 64-bit Architecture
- data type modelUsing the 64-bit Architecture
- large file supportUsing the 64-bit Architecture
- large virtual address spaceUsing the 64-bit Architecture
- libkvm libraryUsing the 64-bit Architecture
- librariesUsing the 64-bit Architecture
- registersUsing the 64-bit Architecture
A
- accessing the signal maskAccessing the Signal Mask of the Calling Thread
- Ada programming languageCompletion Semantics
- adding signals to maskpthread_sigmask Syntax
- aio_cancel() functionWaiting for I/O Operation to Complete
- aio_error() functionWaiting for I/O Operation to Complete
- aio_read() functionAsynchronous I/O Operations
- aio_return() functionWaiting for I/O Operation to Complete
- aio_suspend() functionWaiting for I/O Operation to Complete
- aio_waitn() functionWaiting for I/O Operation to Complete
- aio_write() functionAsynchronous I/O Operations
- aiocbp control blockAsynchronous I/O Operations
- alarmsUsing Alarms
- algorithms
- faster with MTUsing Multiprocessors Efficiently
- parallelMultithreaded Cooperation Through
Barrier Synchronization
- sequentialMultithreaded Cooperation Through
Barrier Synchronization
- allocating storage from heap
- mallocSimple Threads Example
- application-level threadsMultithreading Terms
- architecture
- multiprocessorUnderlying Architecture
- SPARC
- Mutual Exclusion for Two Threads
- Shared-Memory Multiprocessors
- Programming with Synchronization Objects
- assert statement
- Testing the Invariant With assert(3C)
- The Producer and Consumer Problem: the Producer
- The Producer and Consumer Problem: the Producer
- Async-Signal-Safe
- functions
- Oracle SolarisAsync-Signal-Safe Functions in Oracle Solaris Threads
- POSIXSignal Handlers and Async-Signal Safety
- signal handlersSignal Handlers and Async-Signal Safety
- threadsWaiting for a Specified Signal
- asynchronous
- event notificationRoutines for Semaphores
- I/OAsynchronous I/O
- semaphore useRoutines for Semaphores
- signals
- Thread-Directed Signals
- Asynchronous Signals
- Extending Traditional Signals
- asynchronous I/O
- operationsAsynchronous I/O Operations
- waiting forWaiting for I/O Operation to Complete
- atomic, definedProgramming with Synchronization Objects
- automatic
- stack allocationAllocating Stack Space for Threads
B
- barrier synchronization
- Parallelizing a Loop on a Shared-Memory Parallel Computer
- Using Barrier Synchronization
- binary semaphoresSynchronization With Semaphores
- binding
- threads to LWPsthr_create Syntax
- values to keySetting the Thread-Specific Data Value
- bottlenecksLocking Guidelines
- bound threadsMultithreading Terms
- definedMultithreading Terms
C
- caching
- cache definedUnderlying Architecture
- threads data structureCreating and Using Threads
- cancelling threads
- cancellation pointsCancellation Points
- requestCancel a Thread
- requestedThread Cancellation
- changing the signal mask
- Access the Signal Mask of the Calling Thread
- Accessing the Signal Mask of the Calling Thread
- circularly-linked list
- exampleExample of Nested Locking With a Circularly-Linked List
- coarse-grained lockingData Locking
- code lock
- Invariants and Locks
- Reentrant Function
- code monitor
- Avoiding Deadlock
- Code Locking
- compare thread identifierspthread_equal Syntax
- compiling a multithreaded applicationCompiling a Multithreaded Application
- completion semanticsCompletion Semantics
- cond_broadcast() functionUnblock All Threads
- cond_destroy() functionDestroying a Condition Variable
- cond_init() function
- Example of Producer and Consumer Problem
- Initialize a Condition Variable
- USYNC_THREADSynchronizing Across Process Boundaries
- cond_reltimedwait() functionWaiting for a Time Interval
- cond_signal() functionUnblock One Thread
- cond_timedwait() functionWait for an Absolute Time
- cond_wait() functionWaiting for a Condition
- condition variables
- The Producer and Consumer Problem: the Producer
- Condition Variable Attributes
- Programming with Synchronization Objects
- blocking for specified timeBlocking For a Specified Interval
- blocking onBlocking on a Condition Variable
- blocking until specified timeBlocking Until a Specified Time
- destroying stateDestroying the Condition Variable State
- getting clock selectionGetting the Clock Selection Condition Variable
- getting scopeGetting the Scope of a Condition Variable
- initializingInitializing a Condition Variable
- intializing attributesInitializing a Condition Variable Attribute
- removing attributeRemoving a Condition Variable Attribute
- setting clock selectionSetting the Clock Selection Condition Variable
- setting scopeSetting the Scope of a Condition Variable
- unblocking one threadUnblocking One Thread
- unblocking threadsUnblocking All Threads
- condition wait
- POSIX threadsInterrupted Waits on Condition Variables
- contention
- Locking Guidelines
- Avoiding Deadlock
- continuing executionContinuing a Suspended Thread
- counting semaphores
- Synchronization With Semaphores
- Multithreading Terms
- creating
- stacks
- thr_min_stack Syntax
- thr_create Syntax
- pthread_attr_setstack Syntax
- Building Your Own Stack
- threadsCreating and Using Threads
- creating a default threadCreating a Default Thread
- critical sectionPeterson's Algorithm
- custom stack
- thr_min_stack Syntax
- thr_min_stack Syntax
- Building Your Own Stack
D
- daemon threadsthr_create Syntax
- data
- lock
- Invariants and Locks
- Reentrant Function
- races
- Detecting Data Races and Deadlocks Using Thread Analyzer
- Common Oversights in Multithreaded Programs
- Thread Safety
- shared
- Producer and Consumer Problem: Shared Memory Multiprocessors
- User-Level Threads State
- thread-specificCreating a Key for Thread-Specific Data
- dbx debugger
- Using dbx
- Getting the Minimal Stack Size
- deadlock
- definedAvoiding Deadlock
- detectingDetecting Data Races and Deadlocks Using Thread Analyzer
- recursiveAvoiding Deadlock
- schedulingDeadlocks Related to Scheduling
- debuggingDebugging a Multithreaded Program
- asynchronous signalsCommon Oversights in Multithreaded Programs
- dbx
- Using dbx
- Getting the Minimal Stack Size
- deadlocksCommon Oversights in Multithreaded Programs
- dtraceTracing and Debugging with DTrace
- hidden gap in synchronizationCommon Oversights in Multithreaded Programs
- inadequate stack sizeCommon Oversights in Multithreaded Programs
- large automatic arraysCommon Oversights in Multithreaded Programs
- long-jumping without releasing mutex lockCommon Oversights in Multithreaded Programs
- mdbUsing mdb
- no synchronization of global memoryCommon Oversights in Multithreaded Programs
- passing pointer to caller's stackCommon Oversights in Multithreaded Programs
- recursive deadlockCommon Oversights in Multithreaded Programs
- reevaluate conditions after return from condition waitCommon Oversights in Multithreaded Programs
- deleting signals from maskpthread_sigmask Syntax
- destroying an existing thread-specific data keyDeleting the Thread-Specific Data Key
- detached threads
- thr_create Syntax
- pthread_attr_setdetachstate Syntax
- Dijkstra, E. W.Synchronization With Semaphores
- dispatch priority
- calculationTimeshare Scheduling
- rangesLWPs and Scheduling Classes
- DTraceTracing and Debugging with DTrace
E
- errno
- Global Variables and errno
- Thread-Specific Data – Global But Private
- global variablesRethinking Global Variables
- event notificationRoutines for Semaphores
- examining the signal mask
- Access the Signal Mask of the Calling Thread
- Accessing the Signal Mask of the Calling Thread
- example
- thread poolExtended Example: A Thread Pool
Implementation
- exec() function
- Process Creation: exec and exit Issues
- Virtual Forks – vfork
- Fork-One Model
- exit() functionProcess Creation: exec and exit Issues
- exit functionthr_create Syntax
F
- fair share scheduler (FSS) scheduling classFair Share Scheduling
- finding thread priorityGet the Thread Priority
- fine-grained lockingData Locking
- fixed priority scheduling class (FX)Fixed Priority Scheduling
- flags to thr_create functionthr_create Syntax
- flockfile() functionAlternatives to getc and putc
- fork() functionFork-All Model
- fork1() function
- Fork-All Model
- Virtual Forks – vfork
- funlockfile() functionAlternatives to getc and putc
G
- getc() functionAlternatives to getc and putc
- getc() thread-safe versionAlternatives to getc and putc
- getc_unlocked() functionAlternatives to getc and putc
- gethostbyname() functionProviding for Static Local Variables
- gethostbyname_r() functionThe gethostbyname Problem
- getrusage() functionResource Limits
- getting thread-specific key bindingGetting Thread-Specific Data
- global
- dataData Locking
- side effectsSome Basic Guidelines for Threaded Code
- stateReentrant Function
- variables
- Rethinking Global Variables
- Rethinking Global Variables
- Global and Private Thread-Specific Data Example
I
- I/O
- asynchronousAsynchronous I/O
- asynchronous and synchronousI/O as a Remote Procedure Call
- nonsequentialShared I/O and New I/O System Calls
- standardAlternatives to getc and putc
- synchronousI/O as a Remote Procedure Call
- inheriting prioritythr_create Syntax
- initializing the mutexInitializing a Mutex
- interruptExtending Traditional Signals
- invariants
- Invariants and Locks
- The Producer and Consumer Problem: the Producer
J
- joining threads
- Wait for Thread Termination
- pthread_attr_setdetachstate Syntax
- Finishing Up a Thread
- Waiting for Thread Termination
K
- keys
- binding value to keySetting the Thread-Specific Data Value
- storing value ofGetting the Thread-Specific Data Value
- kill() function
- Sending a Signal to a Specific Thread
- Extending Traditional Signals
L
- libc librarySome MT-Safe Libraries
- libC librarySome MT-Safe Libraries
- libCrun librarySome MT-Safe Libraries
- libCstd librarySome MT-Safe Libraries
- libiostream librarySome MT-Safe Libraries
- libm librarySome MT-Safe Libraries
- libmalloc librarySome MT-Safe Libraries
- libmapmalloc librarySome MT-Safe Libraries
- libnsl librarySome MT-Safe Libraries
- libpthread libraryMultithreading Programming in Oracle Solaris
- libraries
- C routinesRethinking Global Variables
- MT-SafeMT Safety Levels for Libraries
- libresolv librarySome MT-Safe Libraries
- libsocket librarySome MT-Safe Libraries
- libthread libraryMultithreading Programming in Oracle Solaris
- libX11 librarySome MT-Safe Libraries
- lightweight processes
- debuggingUsing mdb
- definedMultithreading Terms
- scheduling classesLWPs and Scheduling Classes
- limits, resourcesResource Limits
- local variable
- pointers andThe gethostbyname Problem
- lock hierarchyAvoiding Deadlock
- lockingCode Locking
- coarse grained
- Locking Guidelines
- Data Locking
- codeCode Locking
- conditionalDeadlock Scenarios
- dataData Locking
- fine-grained
- Locking Guidelines
- Data Locking
- guidelinesLocking Guidelines
- invariantsInvariants and Locks
- locks
- mutual exclusion
- Circular-Linked List Structure
- Programming with Synchronization Objects
- read-writerwlock_destroy Syntax
- readers/writerProgramming with Synchronization Objects
- longjmp() function
- Completion Semantics
- Nonlocal Goto: setjmp and longjmp
- lost wake-upLost Wake-Up Problem
- lseek() functionShared I/O and New I/O System Calls
- LWP definedMultithreading Terms
M
- malloc() functionSimple Threads Example
- MAP_NORESERVE parameterAllocating Stack Space for Threads
- MAP_SHARED flagFork-All Model
- mdb commandUsing mdb
- memory
- consistencyWorking With Multiprocessors
- ordering, relaxedProducer and Consumer Problem: Shared Memory Multiprocessors
- strongly orderedProducer and Consumer Problem: Shared Memory Multiprocessors
- mmap() function
- Fork-All Model
- Allocating Stack Space for Threads
- monitor code
- Avoiding Deadlock
- Code Locking
- mprotect functionthr_min_stack Syntax
- MT-Safe libraries
- alternative mmap-based memory allocation librarySome MT-Safe Libraries
- C ++ runtime shared objects
- for C++ 4.0 compilerSome MT-Safe Libraries
- C++ runtime shared objects
- for C++ 5.0 compilerSome MT-Safe Libraries
- C++ standard library
- for Oracle C++ 5.x compilersSome MT-Safe Libraries
- classic iostreams
- for C++Some MT-Safe Libraries
- math librarySome MT-Safe Libraries
- network interfaces of the form getXXbyYY_rSome MT-Safe Libraries
- socket library for making network connectionsSome MT-Safe Libraries
- space-efficient memory allocationSome MT-Safe Libraries
- thread-safe form of unsafe interfacesSome MT-Safe Libraries
- thread-specific errno supportSome MT-Safe Libraries
- X11 Windows routinesSome MT-Safe Libraries
- multiple-readers, single-writer locksrwlock_destroy Syntax
- multiprocessorsWorking With Multiprocessors
- multithreading definedMultithreading Terms
- mutex
- definedMultithreading Terms
- mutual exclusion locksTesting the Invariant With assert(3C)
- scopeSetting the Scope of a Mutex
- mutex type
- PTHREAD_MUTEX_ERRORCHECKpthread_mutex_lock Syntax
- PTHREAD_MUTEX_NORMALpthread_mutex_lock Syntax
- PTHREAD_MUTEX_RECUSIVEpthread_mutex_lock Syntax
- mutex_destroy() functionDestroy a Mutex
- mutex_init() function
- Example of Producer and Consumer Problem
- Initialize a Mutex
- USYNC_THREADSynchronizing Across Process Boundaries
- mutex_lock() functionAcquiring a Mutex
- mutex_trylock() functionTrying to Acquire a Mutex
- mutex_unlock() functionReleasing a Mutex
- mutual exclusion locks
- Circular-Linked List Structure
- Programming with Synchronization Objects
- attributespthread_mutexattr_init Syntax
- deadlockExamples of Using Lock Hierarchies
- default attributesMutual Exclusion Lock Attributes
- destroying mutexDestroying a Mutex Attribute Object
- destroying mutex stateDestroying a Mutex
- getting mutex robust attributeGetting the Mutex's Robust Attribute
- getting mutex scopeGetting the Scope of a Mutex
- getting priority ceiling of mutexGetting the Mutex's Priority Ceiling
- getting priority ceiling of mutex attributeGetting the Mutex Attribute's Priority Ceiling
- getting protocol of mutex attributeGetting the Mutex Attribute's Protocol
- initializingInitializing a Mutex
- lockingLocking a Mutex
- locking before specified timeLocking a Mutex Before a Specified Absolute Time
- locking within time intervalLocking a Mutex Within a Specified Time Interval
- making consistentMaking a Mutex Consistent
- nonblock lockingLocking a Mutex Without Blocking
- setting mutex robust attributeSetting the Mutex's Robust Attribute
- setting priority ceiling of mutexSetting the Mutex's Priority Ceiling
- setting priority ceiling of mutex attributeSetting the Mutex Attribute's Priority Ceiling
- setting protocol of mutex attributeSetting the Mutex Attribute's Protocol
- setting type attributeSetting the Mutex Type Attribute
- unlockingUnlocking a Mutex
N
- NDEBUG definedThe Producer and Consumer Problem: the Producer
- netdirSome MT-Safe Libraries
- netselectSome MT-Safe Libraries
- nice value and class priorityTimeshare Scheduling
- nonsequential I/OShared I/O and New I/O System Calls
- null threads
- thr_min_stack Syntax
- thr_min_stack Syntax
- Building Your Own Stack
P
- parallel algorithmsMultithreaded Cooperation Through
Barrier Synchronization
- PC program counterUser-Level Threads State
- PC_GETCID parameterLWPs and Scheduling Classes
- PC_GETCLINFO parameterLWPs and Scheduling Classes
- PC_GETPARMS parameterLWPs and Scheduling Classes
- PC_SETPARMS parameterLWPs and Scheduling Classes
- Performance AnalyzerProfiling with Performance Analyzer
- Peterson's AlgorithmPeterson's Algorithm
- PL/1 programming languageContinuation Semantics
- portabilityProgramming with Synchronization Objects
- pread() functionShared I/O and New I/O System Calls
- printf() function
- intertwined outputSignal Handlers and Async-Signal Safety
- problemSynchronizing Threads
- priocntl() function
- PC_GETCIDLWPs and Scheduling Classes
- PC_GETCLINFOLWPs and Scheduling Classes
- PC_GETPARMSLWPs and Scheduling Classes
- PC_SETPARMSLWPs and Scheduling Classes
- setting class priorityTimeshare Scheduling
- setting scheduling classLWPs and Scheduling Classes
- priorityUser-Level Threads State
- and schedulingRealtime Scheduling
- inheritance
- Get the Thread Priority
- thr_create Syntax
- rangethr_setprio Syntax
- scheduling andthr_setprio Syntax
- setting for a threadSet the Thread Priority
- priority inversionpthread_mutexattr_setprotocol Syntax
- producer and consumer problem
- Shared-Memory Multiprocessors
- Producer and Consumer Problem Example
- Producer and Consumer Problem Using Semaphores
- producer/consumer problemExample of Producer and Consumer Problem
- profilingProfiling with Performance Analyzer
- multithreaded programsProfiling a Multithreaded Program
- programmer-allocated stack
- thr_min_stack Syntax
- thr_min_stack Syntax
- Building Your Own Stack
- prolagen
- decrease semaphore, P operationSynchronization With Semaphores
- pthread_atfork() function
- Solution: pthread_atfork
- Forking Safely
- pthread_attr_destroy() functionDestroying Attributes
- pthread_attr_getdetachstate() functionGetting the Detach State
- pthread_attr_getguardsize() functionGetting the Stack Guard Size
- pthread_attr_getinheritsched() functionGetting the Inherited Scheduling Policy
- pthread_attr_getname_np() functionGetting the Thread Name Attribute
- pthread_attr_getschedparam() functionGetting the Scheduling Parameters
- pthread_attr_getschedpolicy() functionGetting the Scheduling Policy
- pthread_attr_getscope() functionGetting the Scope
- pthread_attr_getstack() functionGetting the Stack Address and Size
- pthread_attr_getstacksize() functionGetting the Stack Size
- pthread_attr_init() functionInitializing Attributes
- pthread_attr_setdetachstate() functionSetting Detach State
- pthread_attr_setguardsize() functionSetting the Stack Guard Size
- pthread_attr_setinheritsched() functionSetting the Inherited Scheduling Policy
- pthread_attr_setname_np() functionSetting the Thread Name Attribute
- pthread_attr_setschedparam() functionSetting the Scheduling Parameters
- pthread_attr_setschedpolicy() functionSetting the Scheduling Policy
- pthread_attr_setscope() functionSetting the Scope
- pthread_attr_setstack() functionSetting the Stack Address and Size
- pthread_attr_setstacksize() functionSetting the Stack Size
- pthread_barrier_destroy() functionDestroying a Synchronization Barrier
- pthread_barrier_init() functionInitializing a Synchronization Barrier
- pthread_barrier_wait() functionWaiting for Threads to Synchronize at a Barrier
- pthread_barrier_wait functionpthread_barrier_wait Syntax
- pthread_barrierattr_destroy() functionDestroying a Barrier Attributes Object
- pthread_barrierattr_getpshared() functionGetting a Barrier Process-Shared Attribute
- pthread_barrierattr_init() functionInitializing a Barrier Attributes Object
- pthread_barrierattr_setpshared() functionSetting a Barrier Process-Shared Attribute
- pthread_cancel() functionCancelling a Thread
- pthread_cleanup_pop() functionPulling a Handler Off the Stack
- pthread_cleanup_push() functionPushing a Handler Onto the Stack
- pthread_cond_broadcast() function
- Extending Traditional Signals
- Lost Wake-Up Problem
- Unblocking All Threads
- pthread_cond_wait Syntax
- pthread_cond_destroy() function
- pthread_cond_destroy Syntax
- Destroying the Condition Variable State
- pthread_cond_init() functionInitializing a Condition Variable
- pthread_cond_reltimedwait_np() functionBlocking For a Specified Interval
- pthread_cond_signal() function
- Extending Traditional Signals
- Lost Wake-Up Problem
- Unblocking One Thread
- pthread_cond_wait Syntax
- pthread_cond_signal functionProducer and Consumer Problem With Condition Variables
- pthread_cond_timedwait() functionBlocking Until a Specified Time
- pthread_cond_wait() function
- Extending Traditional Signals
- Lost Wake-Up Problem
- Using pthread_cond_wait and pthread_cond_signal
- Blocking on a Condition Variable
- pthread_cond_wait functionProducer and Consumer Problem With Condition Variables
- pthread_condattr_destroy() functionRemoving a Condition Variable Attribute
- pthread_condattr_getclock() functionGetting the Clock Selection Condition Variable
- pthread_condattr_getpshared() functionGetting the Scope of a Condition Variable
- pthread_condattr_init() functionInitializing a Condition Variable Attribute
- pthread_condattr_setclock() functionSetting the Clock Selection Condition Variable
- pthread_condattr_setpshared() functionSetting the Scope of a Condition Variable
- pthread_create() functionCreating a Default Thread
- pthread_detach() functionDetaching a Thread
- pthread_equal() functionComparing Thread IDs
- pthread_exit() functionTerminating a Thread
- pthread_getconcurrency() functionGetting the Thread Concurrency Level
- pthread_getname_np() functionGetting the Thread Name
- pthread_getschedparam() functionGetting the Thread Policy and Scheduling Parameters
- pthread_getspecific() functionGetting Thread-Specific Data
- pthread_join() function
- Tamed Asynchrony
- About Stacks
- Waiting for Thread Termination
- pthread_key_create() functionCreating a Key for Thread-Specific Data
- pthread_key_delete() functionDeleting the Thread-Specific Data Key
- pthread_kill() function
- Sending a Signal to a Specific Thread
- Sending a Signal to a Thread
- pthread_mutex_consistent() functionMaking a Mutex Consistent
- pthread_mutex_destroy function
- pthread_mutex_destroy Return Values
- pthread_mutex_destroy Syntax
- pthread_mutex_getprioceiling() functionGetting the Mutex's Priority Ceiling
- pthread_mutex_lock() functionLocking a Mutex
- pthread_mutex_lock function
- Circular-Linked List Structure
- Singly-Linked List Structure
- Code Examples of Mutex Locking
- pthread_mutex_setprioceiling() functionSetting the Mutex's Priority Ceiling
- pthread_mutex_timedlock function
- pthread_mutex_reltimedlock_np Return
Values
- pthread_mutex_reltimedlock_np Syntax
- pthread_mutex_timedlock Return Values
- pthread_mutex_timedlock Syntax
- pthread_mutex_trylock() function
- Avoiding Deadlock
- Locking a Mutex Without Blocking
- pthread_mutex_trylock functionConditional Locking
- pthread_mutex_unlock() functionUnlocking a Mutex
- pthread_mutex_unlock function
- Circular-Linked List Structure
- Singly-Linked List Structure
- Code Examples of Mutex Locking
- pthread_mutexattr_destroy() functionDestroying a Mutex Attribute Object
- pthread_mutexattr_getprioceiling() functionGetting the Mutex Attribute's Priority Ceiling
- pthread_mutexattr_getprotocol() functionGetting the Mutex Attribute's Protocol
- pthread_mutexattr_getpshared() functionGetting the Scope of a Mutex
- pthread_mutexattr_getrobust() functionGetting the Mutex's Robust Attribute
- pthread_mutexattr_gettype() functionGetting the Mutex Type Attribute
- pthread_mutexattr_init() function
- pthread_mutexattr_init Return Values
- pthread_mutexattr_init Syntax
- pthread_mutexattr_init() functionInitializing a Mutex
- pthread_mutexattr_setprioceiling() functionSetting the Mutex Attribute's Priority Ceiling
- pthread_mutexattr_setprotocol() functionSetting the Mutex Attribute's Protocol
- pthread_mutexattr_setpshared() functionSetting the Scope of a Mutex
- pthread_mutexattr_setrobust() functionSetting the Mutex's Robust Attribute
- pthread_mutexattr_settype() functionSetting the Mutex Type Attribute
- pthread_once() functionCalling an Initialization Routine for a Thread
- PTHREAD_PRIO_INHERIT valuepthread_mutexattr_setprotocol Syntax
- PTHREAD_PRIO_NONE valuepthread_mutexattr_setprotocol Syntax
- PTHREAD_PRIO_PROTECT valuepthread_mutexattr_setprotocol Syntax
- pthread_rwlock_destroy() functionDestroying a Read-Write Lock
- pthread_rwlock_init() functionInitializing a Read-Write Lock
- pthread_rwlock_rdlock() functionAcquiring the Read Lock on Read-Write Lock
- pthread_rwlock_timedrdlock() functionAcquiring a Read Lock on a Read-Write Lock Before
a Specified Absolute Time
- pthread_rwlock_timedwrlock() functionAcquiring a Write Lock on a Read-Write Lock Before
a Specified Absolute Time
- pthread_rwlock_tryrdlock() functionAcquiring a Non-Blocking Read Lock on a Read-Write Lock
- pthread_rwlock_tryrdlock functionpthread_rwlock_tryrdlock Syntax
- pthread_rwlock_trywrlock() functionAcquiring a Non-blocking Write Lock on a Read-Write
Lock
- pthread_rwlock_trywrlock functionpthread_rwlock_trywrlock Syntax
- pthread_rwlock_unlock() functionUnlocking a Read-Write Lock
- pthread_rwlock_wrlock() functionAcquiring the Write Lock on a Read-Write Lock
- pthread_rwlockattr_destroy() functionDestroying a Read-Write Lock Attribute
- pthread_rwlockattr_getpshared() functionGetting a Read-Write Lock Attribute
- pthread_rwlockattr_init() functionInitializing a Read-Write Lock Attribute
- pthread_rwlockattr_setpshared() functionSetting a Read-Write Lock Attribute
- PTHREAD_SCOPE_PROCESS constant
- Setting the Scope
- Thread Scheduling
- PTHREAD_SCOPE_SYSTEM constant
- Setting the Scope
- Thread Scheduling
- pthread_self() functionGetting the Thread Identifier
- pthread_setcancelstate() functionEnabling or Disabling Cancellation
- pthread_setconcurrency() functionSetting the Thread Concurrency Level
- pthread_setname_np() functionSetting the Thread Name
- pthread_setschedparam() functionSetting the Thread Policy and Scheduling Parameters
- pthread_setschedprio() functionSetting the Thread Priority
- pthread_setspecific() functionSetting Thread-Specific Data
- pthread_sigmask() function
- Setting the Thread's Signal Mask
- Accessing the Signal Mask of the Calling Thread
- pthread_spin_destroy() functionDestroying a Spin Lock
- pthread_spin_init() functionInitializing a Spin Lock
- pthread_spin_lock() functionAcquiring a Spin Lock
- pthread_spin_trylock() functionAcquiring a Non-Blocking Spin Lock
- pthread_spin_unlock() functionUnlocking a Spin Lock
- PTHREAD_STACK_MIN macroBuilding Your Own Stack
- pthread_testcancel() function
- pthread_testcancel Syntax
- Setting Cancellation Type
- putc() thread-safe versionAlternatives to getc and putc
- putc_unlocked() functionAlternatives to getc and putc
- pwrite() functionShared I/O and New I/O System Calls
R
- read() functionShared I/O and New I/O System Calls
- read-write locksrwlock_destroy Syntax
- acquiring read lockAcquiring the Read Lock on Read-Write Lock
- acquiring write lockpthread_rwlock_wrlock Syntax
- attributesRead-Write Lock Attributes
- destroyingDestroying a Read-Write Lock
- destroying lock attributeDestroying a Read-Write Lock Attribute
- getting lock attributeGetting a Read-Write Lock Attribute
- initializing lock
- Initializing a Read-Write Lock
- pthread_rwlockattr_init Syntax
- locking read lockAcquiring a Non-Blocking Read Lock on a Read-Write Lock
- locking write lockpthread_rwlock_trywrlock Syntax
- releasing read lockUnlocking a Read-Write Lock
- setting lock attributeSetting a Read-Write Lock Attribute
- readers/writer locksProgramming with Synchronization Objects
- realtime
- schedulingRealtime Scheduling
- red zone
- thr_min_stack Syntax
- Allocating Stack Space for Threads
- reentrantReentrant Function
- describedReentrant Function
- functions
- Reentrant Functions for Unsafe Interfaces
- Interface Safety Levels
- strategies for makingReentrant Function
- register stateUser-Level Threads State
- relaxed memory orderingProducer and Consumer Problem: Shared Memory Multiprocessors
- remote procedure call RPCCombining Threads and RPC
- replacing signal maskpthread_sigmask Syntax
- resuming executionContinuing a Suspended Thread
- RPC
- Creating and Using Threads
- Some MT-Safe Libraries
- Combining Threads and RPC
- RT, Seerealtime
- rw_rdlock() functionAcquiring a Read Lock
- rw_tryrdlock() functionTrying to Acquire a Read Lock
- rw_trywrlock() functionTrying to Acquire a Write Lock
- rw_unlock() functionUnlock a Read-Write Lock
- rw_wrlock() functionAcquiring a Write Lock
- rwlock_destroy() functionDestroying the Read-Write Lock State
- rwlock_init() functionInitialize a Read-Write Lock
- USYNC_THREADSynchronizing Across Process Boundaries
S
- SA_RESTARTInterrupted Waits on Condition Variables
- safety, threads interfaces
- Unsafe Libraries
- Safe and Unsafe Interfaces
- sched_yield() function
- Deadlocks Related to Scheduling
- Yielding Thread Execution
- scheduling
- classesThread Scheduling
- policiesThread Scheduling
- scopesThread Scheduling
- system classLWPs and Scheduling Classes
- scheduling class
- fair share scheduler (FSS)Fair Share Scheduling
- fixed priority scheduler (FX)Fixed Priority Scheduling
- priorityLWPs and Scheduling Classes
- realtimeRealtime Scheduling
- timeshareTimeshare Scheduling
- scope stateThread Scheduling
- sem_destroy() functionDestroying the Semaphore State
- sem_init() function
- Producer and Consumer Problem Using Semaphores
- Initializing a Semaphore
- sem_post() function
- Incrementing a Semaphore
- Synchronization With Semaphores
- sem_trywait() function
- Decrementing a Semaphore Count
- Synchronization With Semaphores
- sem_wait() function
- Blocking on a Semaphore Count
- Synchronization With Semaphores
- sema_destroy() functionDestroy the Semaphore State
- sema_init() functionInitialize a Semaphore
- USYNC_THREADSynchronizing Across Process Boundaries
- sema_post() function
- Async-Signal-Safe Functions in Oracle Solaris Threads
- Increment a Semaphore
- sema_trywait() functionDecrement a Semaphore Count
- sema_wait() functionBlock on a Semaphore Count
- semaphores
- Comparing Primitives
- Synchronization With Semaphores
- Programming with Synchronization Objects
- binarySynchronization With Semaphores
- blocking calling threadBlocking on a Semaphore Count
- countingSynchronization With Semaphores
- counting, definedMultithreading Terms
- decrement semaphore valueSynchronization With Semaphores
- decrementing countDecrementing a Semaphore Count
- destroying stateDestroying the Semaphore State
- increment semaphore valueSynchronization With Semaphores
- incrementingIncrementing a Semaphore
- initializingInitializing a Semaphore
- interprocessInitializing Semaphores With Interprocess Scope
- intraprocessInitializing Semaphores With Intraprocess Scope
- namedNamed and Unnamed Semaphores
- unnamedNamed and Unnamed Semaphores
- sending signal to threadSending a Signal to a Thread
- sequential algorithmsParallelizing a Loop on a Shared-Memory Parallel Computer
- setjmp() function
- Completion Semantics
- Completion Semantics
- Nonlocal Goto: setjmp and longjmp
- setting thread-specific key bindingSetting Thread-Specific Data
- shared data
- Data Locking
- User-Level Threads State
- shared-memory multiprocessorProducer and Consumer Problem: Shared Memory Multiprocessors
- SIG_DFL flagExtending Traditional Signals
- SIG_IGN flagExtending Traditional Signals
- SIG_SETMASK signalpthread_sigmask Syntax
- sigaction() function
- Extending Traditional Signals
- Extending Traditional Signals
- SIGFPE signal
- Completion Semantics
- Synchronous Signals
- SIGILL signalSynchronous Signals
- SIGINT signal
- Asynchronous Signals and sigwait(2)
- Asynchronous Signals
- SIGIO signalAsynchronous Signals
- siglongjmp() functionCompletion Semantics
- signal
- handlerExtending Traditional Signals
- signal handlerThread-Directed Signals
- signal() functionExtending Traditional Signals
- signal.h fileSend a Signal to a Thread
- signals
- access maskAccess the Signal Mask of the Calling Thread
- adding to maskpthread_sigmask Syntax
- asynchronous
- Thread-Directed Signals
- Asynchronous Signals
- Extending Traditional Signals
- deleting from maskpthread_sigmask Syntax
- inheritancethr_create Syntax
- masksUser-Level Threads State
- pending
- thr_create Syntax
- Continuing a Suspended Thread
- replacing current maskpthread_sigmask Syntax
- sending to a threadSending a Signal to a Specific Thread
- sending to thread
- Send a Signal to a Thread
- Sending a Signal to a Thread
- SIG_BLOCKpthread_sigmask Syntax
- SIG_SETMASKpthread_sigmask Syntax
- SIG_UNBLOCKpthread_sigmask Syntax
- SIGSEGVAbout Stacks
- synchronousSynchronous Signals
- unmasked and caughtInterrupted Waits on Condition Variables
- sigprocmask() functionSetting the Thread's Signal Mask
- sigqueue() functionExtending Traditional Signals
- SIGSEGV signal
- Synchronous Signals
- About Stacks
- sigsend() functionExtending Traditional Signals
- sigsetjmp() functionCompletion Semantics
- sigtimedwait() functionWaiting for Specified Signal Within a Given Time
- sigwait() function
- Completion Semantics
- Thread-Directed Signals
- Waiting for a Specified Signal
- single-threaded
- assumptionsRethinking Global Variables
- codeMutual Exclusion Lock Attributes
- definedMultithreading Terms
- processesProcess Creation: exec and exit Issues
- singly-linked list
- exampleSingly-Linked List Structure
- singly-linked list with nested locking
- exampleSingly-Linked List Structure
- size of stack
- Getting the Minimal Stack Size
- thr_create Syntax
- pthread_attr_setstacksize Syntax
- Building Your Own Stack
- spin locks
- definedUsing Spin Locks
- spurious wakeupInterrupted Waits on Condition Variables
- stackCreating and Using Threads
- address
- thr_create Syntax
- pthread_attr_setstack Syntax
- boundariesAbout Stacks
- creation
- thr_create Syntax
- pthread_attr_setstack Syntax
- customthr_min_stack Syntax
- deallocationthr_min_stack Syntax
- minimum sizeBuilding Your Own Stack
- overflowsAllocating Stack Space for Threads
- pointerUser-Level Threads State
- programmer-allocated
- thr_min_stack Syntax
- thr_min_stack Syntax
- Building Your Own Stack
- red zone
- thr_min_stack Syntax
- Allocating Stack Space for Threads
- returning a pointer toInterface Safety Levels
- size
- thr_create Syntax
- pthread_attr_setstacksize Syntax
- Building Your Own Stack
- stack size
- finding minimumGetting the Minimal Stack Size
- minimumthr_min_stack Syntax
- stack_base
- thr_create Syntax
- pthread_attr_setstack Syntax
- stack_size
- thr_create Syntax
- pthread_attr_setstacksize Syntax
- standard I/OAlternatives to getc and putc
- standards
- UNIXMultithreading Programming in Oracle Solaris
- start_routine() functionthr_create Syntax
- static storageRethinking Global Variables
- store bufferMutual Exclusion for Two Threads
- storing thread key valueGetting the Thread-Specific Data Value
- streaming a tape driveAsynchronous I/O
- strongly ordered memoryProducer and Consumer Problem: Shared Memory Multiprocessors
- suspending a new threadthr_create Syntax
- swap spaceAllocating Stack Space for Threads
- synchronization objects
- condition variables
- The Producer and Consumer Problem: the Producer
- Condition Variable Attributes
- Programming with Synchronization Objects
- mutex locks
- Circular-Linked List Structure
- Programming with Synchronization Objects
- read-write locksrwlock_destroy Syntax
- semaphores
- Example of Producer and Consumer Problem
- Similar Synchronization Functions: Semaphores
- Synchronization With Semaphores
- Programming with Synchronization Objects
- synchronous I/O
- asynchronous andI/O as a Remote Procedure Call
- synchronous signalsSynchronous Signals
- system calls
- handling errorsRethinking Global Variables
- system scheduling classLWPs and Scheduling Classes
T
- tape drive, streamingAsynchronous I/O
- THR_BOUND valuethr_create Syntax
- thr_continue() functionContinuing a Suspended Thread
- thr_continue functionthr_create Syntax
- thr_create() functionCreating a Thread
- thr_create functionthr_min_stack Syntax
- THR_DAEMON valuethr_create Syntax
- THR_DETACHED valuethr_create Syntax
- thr_exit() functionTerminate a Thread
- thr_exit functionthr_create Syntax
- thr_getprio() functionGet the Thread Priority
- thr_getspecific() functionGetting the Thread-Specific Data Value
- thr_join() functionWait for Thread Termination
- thr_keycreate() functionCreating a Thread-Specific Data Key
- thr_kill() function
- Async-Signal-Safe Functions in Oracle Solaris Threads
- Send a Signal to a Thread
- thr_min_stack() functionGetting the Minimal Stack Size
- thr_min_stack functionthr_create Syntax
- thr_self() functionAcquiring the Thread Identifier
- thr_setprio() functionSet the Thread Priority
- thr_setspecific() functionSetting the Thread-Specific Data Value
- thr_sigsetmask() function
- Async-Signal-Safe Functions in Oracle Solaris Threads
- Access the Signal Mask of the Calling Thread
- thr_suspend() functionSuspending Thread Execution
- thr_yield() functionYield Thread Execution
- Thread AnalyzerDetecting Data Races and Deadlocks Using Thread Analyzer
- thread identifierpthread_self Syntax
- thread lifecycleLifecycle of a Thread
- thread local storageCreating a Key for Thread-Specific Data
- thread pool
- definedWhat is a Thread Pool?
- thread synchronization
- condition variablesThread Synchronization
- mutex locksThread Synchronization
- mutual exclusion locksMutual Exclusion Lock Attributes
- read-write locksRead-Write Lock Attributes
- read/write locksThread Synchronization
- semaphores
- Synchronization With Semaphores
- Thread Synchronization
- thread-directed signalThread-Directed Signals
- thread-private storageUser-Level Threads State
- thread-specific dataCreating a Key for Thread-Specific Data
- exampleGlobal and Private Thread-Specific Data Example
- gettingGetting the Thread-Specific Data Value
- global into privateThread-Specific Data – Global But Private
- new storage classGlobal Variables and errno
- settingSetting the Thread-Specific Data Value
- thread-specific keys
- creating
- Creating a Thread-Specific Data Key
- Creating a Key for Thread-Specific Data
- threads
- acquiring identifiersAcquiring the Thread Identifier
- cancelling
- Cancelling a Thread
- Cancel a Thread
- Thread Cancellation
- creating
- Creating and Using Threads
- thr_create Return Values
- Creating a Thread
- daemonthr_create Syntax
- detached
- thr_create Syntax
- pthread_attr_setdetachstate Syntax
- identifiersthr_create Syntax
- joiningWait for Thread Termination
- keysSetting the Thread-Specific Data Value
- null
- thr_min_stack Syntax
- thr_min_stack Syntax
- Building Your Own Stack
- prioritythr_create Syntax
- safety
- Unsafe Libraries
- Thread Safety
- sending signal toSend a Signal to a Thread
- signalsInterrupted Waits on Condition Variables
- stackInterface Safety Levels
- suspendedContinuing a Suspended Thread
- suspendingthr_create Syntax
- synchronization modelsThread Synchronization
- synchronizing
- Comparing Primitives
- Programming with Synchronization Objects
- terminating
- Terminate a Thread
- Terminating a Thread
- thread-specific dataGlobal Variables and errno
- user-level
- User-Level Threads
- Multithreading Terms
- yielding executionYield Thread Execution
- threads definedMultithreading Terms
- time-out
- examplepthread_cond_timedwait Return Values
- timer
- per LWPUsing Timers
- timeshare scheduling classTimeshare Scheduling
- TLISome MT-Safe Libraries
- tools
- dbx
- Using dbx
- Getting the Minimal Stack Size
- DtraceTracing and Debugging with DTrace
- mdbUsing mdb
- Performance AnalyzerProfiling with Performance Analyzer
- Thread AnalyzerDetecting Data Races and Deadlocks Using Thread Analyzer
- total store orderMutual Exclusion for Two Threads
- trap
- default actionSynchronous Signals
- handled by threadSynchronous Signals
- TS Seetimeshare scheduling class
U
- /usr/include/errno.hPreparing for Compilation
- /usr/include/limits.hPreparing for Compilation
- /usr/include/pthread.hPreparing for Compilation
- /usr/include/signal.hPreparing for Compilation
- /usr/include/thread.hPreparing for Compilation
- /usr/include/unistd.hPreparing for Compilation
- unbound threads
- cachingCreating and Using Threads
- definedMultithreading Terms
- user-level threads
- User-Level Threads
- Multithreading Terms
- USYNC_PROCESS
- condition variablecond_init Syntax
- mutexmutex_init Syntax
- read-write lockrwlock_init Syntax
- semaphoresema_init Syntax
- USYNC_PROCESS valueExample of Producer and Consumer Problem
- USYNC_PROCESS_ROBUST
- mutexmutex_init Syntax
- USYNC_THREAD
- condition variablecond_init Syntax
- semaphoresema_init Syntax
- USYNC_THREAD value
- mutexmutex_init Syntax
- read-write lockrwlock_init Syntax
V
- variables
- condition
- Comparing Primitives
- The Producer and Consumer Problem: the Producer
- Condition Variable Attributes
- Programming with Synchronization Objects
- globalRethinking Global Variables
- primitiveProgramming with Synchronization Objects
- verhogen
- increase semaphore, V operationSynchronization With Semaphores
- vfork() functionVirtual Forks – vfork
W
- write() functionShared I/O and New I/O System Calls
X
- XDRSome MT-Safe Libraries