| R | 
  
  
    | 
Race conditions
     | 
  
  
    | 
    among threads
     | 
  
  
    | 
    avoiding
     | 
  
  
    | 
    word tearing
     | 
  
  
    | 
RAISE macro
     | 
  
  
    | 
Read-write lock attributes objects
     | 
  
  
    | 
    creating
     | 
  
  
    | 
    destroying
     | 
  
  
    | 
    get process-shared attribute value
     | 
  
  
    | 
    initializing
     | 
  
  
    | 
    set process-shared attribute value
     | 
  
  
    | 
Read-write locks #1
     | 
  
  
    | 
Read-write locks #2
     | 
  
  
    | 
    attributes
     | 
  
  
    | 
    changing object name in
     | 
  
  
    | 
    creating #1
     | 
  
  
    | 
    creating #2
     | 
  
  
    | 
    destroying #1
     | 
  
  
    | 
    destroying #2
     | 
  
  
    | 
    destroying #3
     | 
  
  
    | 
    initializing #1
     | 
  
  
    | 
    initializing #2
     | 
  
  
    | 
    initializing #3
     | 
  
  
    | 
    locking
     | 
  
  
    | 
        for read access #1
     | 
  
  
    | 
        for read access #2
     | 
  
  
    | 
        for read access #3
     | 
  
  
    | 
            without waiting
     | 
  
  
    | 
        for write access #1
     | 
  
  
    | 
        for write access #2
     | 
  
  
    | 
        for write access #3
     | 
  
  
    | 
            without waiting
     | 
  
  
    | 
    obtaining object name
     | 
  
  
    | 
    process-shared
     | 
  
  
    | 
    thread priority
     | 
  
  
    | 
    under the thread-independent services (tis) interface
     | 
  
  
    | 
    unlocking
     | 
  
  
    | 
        for read access
     | 
  
  
    | 
        for write access
     | 
  
  
    | 
    using in thread-safe library code
     | 
  
  
    | 
    writer precedence
     | 
  
  
    | 
Realtime scheduling
     | 
  
  
    | 
    of POSIX Threads
     | 
  
  
    | 
        under Tru64 UNIX
     | 
  
  
    | 
Recursive mutexes
     | 
  
  
    | 
Reentrant code
     | 
  
  
    | 
    required for multithreaded programming
     | 
  
  
    | 
    required for thread-safe code
     | 
  
  
    | 
RERAISE macro #1
     | 
  
  
    | 
RERAISE macro #2
     | 
  
  
    | 
Round-robin (RR) scheduling policy
     | 
  
  
    | S | 
  
  
    | 
Scheduling parameters
     | 
  
  
    | 
    of threads
     | 
  
  
    | 
        obtaining
     | 
  
  
    | 
        setting
     | 
  
  
    | 
Scheduling parameters attribute
     | 
  
  
    | 
    of thread attributes object
     | 
  
  
    | 
        obtaining
     | 
  
  
    | 
        setting
     | 
  
  
    | 
Scheduling policy attribute
     | 
  
  
    | 
    of thread attributes object
     | 
  
  
    | 
        obtaining
     | 
  
  
    | 
        setting
     | 
  
  
    | 
Scheduling priority attribute, of thread attributes object
     | 
  
  
    | 
sched_get_priority_max() routine
     | 
  
  
    | 
sched_get_priority_min() routine
     | 
  
  
    | 
sched_yield() routine
     | 
  
  
    | 
Sequence numbers
     | 
  
  
    | 
    See Thread sequence numbers
     | 
  
  
    | 
Sharing memory
     | 
  
  
    | 
    between threads
     | 
  
  
    | 
Sharing memory, between threads
     | 
  
  
    | 
Signal masks (Tru64 UNIX)
     | 
  
  
    | 
    See Thread signal masks
     | 
  
  
    | 
Signals (Tru64 UNIX)
     | 
  
  
    | 
    per-thread usage
     | 
  
  
    | 
    synchronous
     | 
  
  
    | 
        reported as exceptions
     | 
  
  
    | 
sigwait() routine #1
     | 
  
  
    | 
sigwait() routine #2
     | 
  
  
    | 
Spurious wakeups
     | 
  
  
    | 
Stack address attribute
     | 
  
  
    | 
    of thread attributes object
     | 
  
  
    | 
        obtaining #1
     | 
  
  
    | 
        obtaining #2
     | 
  
  
    | 
        setting #1
     | 
  
  
    | 
        setting #2
     | 
  
  
    | 
Stack memory
     | 
  
  
    | 
Stack memory, using from threads
     | 
  
  
    | 
Stacks, of threads
     | 
  
  
    | 
    See Thread stacks
     | 
  
  
    | 
Stacksize attribute
     | 
  
  
    | 
    of thread attributes object
     | 
  
  
    | 
        obtaining
     | 
  
  
    | 
        setting
     | 
  
  
    | 
Static memory
     | 
  
  
    | 
    using before release of mutex
     | 
  
  
    | 
    using from threads
     | 
  
  
    | 
Status exceptions
     | 
  
  
    | 
$SYNC
     | 
  
  
    | 
Synchronization objects
     | 
  
  
    | 
    condition variables
     | 
  
  
    | 
    mutexes
     | 
  
  
    | 
    read-write locks
     | 
  
  
    | 
    stack-based
     | 
  
  
    | 
        static initialization inappropriate for
     | 
  
  
    | 
    static initialization of
     | 
  
  
    | 
Synchronizing I/O completion #1
     | 
  
  
    | 
Synchronizing I/O completion #2
     | 
  
  
    | 
Synchronous cancelation
     | 
  
  
    | 
    of threads
     | 
  
  
    | 
Synchronous thread cancelation
     | 
  
  
    | 
SYSGEN
     | 
  
  
    | 
    MULTITHREAD parameter
     | 
  
  
    | 
SYSGEN (OpenVMS)
     | 
  
  
    | 
    MULTITHREAD parameter
     | 
  
  
    | 
System contention scope #1
     | 
  
  
    | 
System contention scope #2
     | 
  
  
    | 
    of threads
     | 
  
  
    | 
System services, cancelability from POSIX Threads #1
     | 
  
  
    | 
System services, cancelability from POSIX Threads #2
     | 
  
  
    | T | 
  
  
    | 
THIS_CATCH exception object
     | 
  
  
    | 
Thread attributes objects
     | 
  
  
    | 
    cancelability state attribute
     | 
  
  
    | 
        setting #1
     | 
  
  
    | 
        setting #2
     | 
  
  
    | 
    cancelability type attribute
     | 
  
  
    | 
        setting
     | 
  
  
    | 
    contention scope attribute #1
     | 
  
  
    | 
    contention scope attribute #2
     | 
  
  
    | 
    contention scope attribute #3
     | 
  
  
    | 
    creating
     | 
  
  
    | 
    destroying
     | 
  
  
    | 
    detachstate attribute #1
     | 
  
  
    | 
    detachstate attribute #2
     | 
  
  
    | 
    guardsize attribute #1
     | 
  
  
    | 
    guardsize attribute #2
     | 
  
  
    | 
    guardsize attribute #3
     | 
  
  
    | 
    guardsize attribute #4
     | 
  
  
    | 
    inherit scheduling attribute #1
     | 
  
  
    | 
    inherit scheduling attribute #2
     | 
  
  
    | 
    inherit scheduling attribute #3
     | 
  
  
    | 
    initializing
     | 
  
  
    | 
    naming #1
     | 
  
  
    | 
    naming #2
     | 
  
  
    | 
    scheduling parameters #1
     | 
  
  
    | 
    scheduling parameters #2
     | 
  
  
    | 
    scheduling policy attribute #1
     | 
  
  
    | 
    scheduling policy attribute #2
     | 
  
  
    | 
    scheduling policy attribute #3
     | 
  
  
    | 
    scheduling priority attribute
     | 
  
  
    | 
    setting attributes in
     | 
  
  
    | 
    stack address attribute #1
     | 
  
  
    | 
    stack address attribute #2
     | 
  
  
    | 
    stack address attribute #3
     | 
  
  
    | 
    stack address attribute #4
     | 
  
  
    | 
    stack address attribute #5
     | 
  
  
    | 
    stacksize attribute #1
     | 
  
  
    | 
    stacksize attribute #2
     | 
  
  
    | 
    stacksize attribute #3
     | 
  
  
    | 
Thread-independent services (tis) interface #1
     | 
  
  
    | 
Thread-independent services (tis) interface #2
     | 
  
  
    | 
    condition variables
     | 
  
  
    | 
    features of
     | 
  
  
    | 
    mutexes
     | 
  
  
    | 
    of POSIX Threads
     | 
  
  
    | 
    performance of routines
     | 
  
  
    | 
    read-write locks
     | 
  
  
    | 
    run-time linkages to routines
     | 
  
  
    | 
    summary of routines
     | 
  
  
    | 
    thread-specific data
     | 
  
  
    | 
Thread objects
     | 
  
  
    | 
    naming #1
     | 
  
  
    | 
    naming #2
     | 
  
  
    | 
Thread objects, naming #1
     | 
  
  
    | 
Thread objects, naming #2
     | 
  
  
    | 
Thread-reentrant code
     | 
  
  
    | 
    See Reentrant code
     | 
  
  
    | 
Thread-safe code
     | 
  
  
    | 
    in libraries
     | 
  
  
    | 
    requires reentrant compilation
     | 
  
  
    | 
    using condition variables
     | 
  
  
    | 
    using mutexes
     | 
  
  
    | 
    using read-write locks
     | 
  
  
    | 
    using thread-specific data
     | 
  
  
    | 
Thread sequence numbers, obtaining
     | 
  
  
    | 
Thread signal masks (Tru64 UNIX)
     | 
  
  
    | 
    obtaining
     | 
  
  
    | 
    setting
     | 
  
  
    | 
Thread-specific data
     | 
  
  
    | 
    keys
     | 
  
  
    | 
        creating #1
     | 
  
  
    | 
        creating #2
     | 
  
  
    | 
        destroying #1
     | 
  
  
    | 
        destroying #2
     | 
  
  
    | 
        naming #1
     | 
  
  
    | 
        naming #2
     | 
  
  
    | 
        obtaining #1
     | 
  
  
    | 
        obtaining #2
     | 
  
  
    | 
        setting #1
     | 
  
  
    | 
        setting #2
     | 
  
  
    | 
    under the thread-independent  services (tis) interface
     | 
  
  
    | 
    using in thread-safe library code
     | 
  
  
    | 
Thread-specific data keys
     | 
  
  
    | 
    naming #1
     | 
  
  
    | 
    naming #2
     | 
  
  
    | 
Thread stacks
     | 
  
  
    | 
    default size of
     | 
  
  
    | 
        under OpenVMS
     | 
  
  
    | 
    diagnosing overflow
     | 
  
  
    | 
    identifying overflow of #1
     | 
  
  
    | 
    identifying overflow of #2
     | 
  
  
    | 
    incremental allocation
     | 
  
  
    | 
        under Tru64 UNIX
     | 
  
  
    | 
    managing
     | 
  
  
    | 
    minimum size of
     | 
  
  
    | 
        under OpenVMS
     | 
  
  
    | 
    requesting absolute size of
     | 
  
  
    | 
    setting the origin address
     | 
  
  
    | 
    size of
     | 
  
  
    | 
        determining
     | 
  
  
    | 
        requesting absolute
     | 
  
  
    | 
    tracing
     | 
  
  
    | 
    using a stack guard area #1
     | 
  
  
    | 
    using a stack guard area #2
     | 
  
  
    | 
        under Tru64 UNIX
     | 
  
  
    | 
    using a stack overflow warning area #1
     | 
  
  
    | 
    using a stack overflow warning area #2
     | 
  
  
    | 
THREADCP tool
     | 
  
  
    | 
THREADCP tool (OpenVMS)
     | 
  
  
    | 
Threads
     | 
  
  
    | 
    advantages of
     | 
  
  
    | 
    attributes of
     | 
  
  
    | 
    avoiding nonreentrant routines
     | 
  
  
    | 
    cancelability state
     | 
  
  
    | 
    cancelability type
     | 
  
  
    | 
    canceling #1
     | 
  
  
    | 
    canceling #2
     | 
  
  
    | 
        asynchronously
     | 
  
  
    | 
        code example
     | 
  
  
    | 
        control of
     | 
  
  
    | 
        delivery of cancelation request
     | 
  
  
    | 
        exception-based implementation
     | 
  
  
    | 
        PTHREAD_CANCELED return value
     | 
  
  
    | 
        synchronously
     | 
  
  
    | 
        whether enabled
     | 
  
  
    | 
    changes of state
     | 
  
  
    | 
    cleanup
     | 
  
  
    | 
        from asynchronous cancelation
     | 
  
  
    | 
        from deferred cancelation
     | 
  
  
    | 
    cleanup handlers #1
     | 
  
  
    | 
    cleanup handlers #2
     | 
  
  
    | 
    cleanup handlers #3
     | 
  
  
    | 
    concurrency level #1
     | 
  
  
    | 
    concurrency level #2
     | 
  
  
    | 
    contention scope
     | 
  
  
    | 
    context-switching
     | 
  
  
    | 
        in user mode
     | 
  
  
    | 
    creating #1
     | 
  
  
    | 
    creating #2
     | 
  
  
    | 
    deadlocks among
     | 
  
  
    | 
    delaying execution of
     | 
  
  
    | 
    delivering cancelation requests
     | 
  
  
    | 
    destroying #1
     | 
  
  
    | 
    destroying #2
     | 
  
  
    | 
    detaching #1
     | 
  
  
    | 
    detaching #2
     | 
  
  
    | 
    executing
     | 
  
  
    | 
    granularity considerations
     | 
  
  
    | 
    identifiers
     | 
  
  
    | 
        comparing
     | 
  
  
    | 
        obtaining #1
     | 
  
  
    | 
        obtaining #2
     | 
  
  
    | 
    joining with another thread #1
     | 
  
  
    | 
    joining with another thread #2
     | 
  
  
    | 
    locking mutexes #1
     | 
  
  
    | 
    locking mutexes #2
     | 
  
  
    | 
    on multiprocessor systems
     | 
  
  
    | 
    one-time initialization of #1
     | 
  
  
    | 
    one-time initialization of #2
     | 
  
  
    | 
    one-time initialization of #3
     | 
  
  
    | 
    overview of
     | 
  
  
    | 
    priority inversion among
     | 
  
  
    | 
    process contention scope
     | 
  
  
    | 
    process-shared synchronization objects
     | 
  
  
    | 
    race conditions among
     | 
  
  
    | 
    reentrant code for
     | 
  
  
    | 
    releasing processor #1
     | 
  
  
    | 
    releasing processor #2
     | 
  
  
    | 
    scheduling
     | 
  
  
    | 
        alternative policies
     | 
  
  
    | 
        alternative priorities
     | 
  
  
    | 
        calculating priority
     | 
  
  
    | 
        effects of scheduling policy
     | 
  
  
    | 
        inheriting attributes
     | 
  
  
    | 
        issues
     | 
  
  
    | 
        realtime (Tru64 UNIX)
     | 
  
  
    | 
    scheduling parameters
     | 
  
  
    | 
        obtaining
     | 
  
  
    | 
        setting
     | 
  
  
    | 
    See also Multithreaded programming
     | 
  
  
    | 
    sending signals to
     | 
  
  
    | 
    sequence numbers
     | 
  
  
    | 
        obtaining
     | 
  
  
    | 
    sharing memory
     | 
  
  
    | 
    signal masks for (Tru64 UNIX)
     | 
  
  
    | 
        obtaining
     | 
  
  
    | 
        setting
     | 
  
  
    | 
    synchronizing memory access
     | 
  
  
    | 
    system contention scope
     | 
  
  
    | 
    terminating #1
     | 
  
  
    | 
    terminating #2
     | 
  
  
    | 
        due to error
     | 
  
  
    | 
        normally
     | 
  
  
    | 
        series of actions #1
     | 
  
  
    | 
        series of actions #2
     | 
  
  
    | 
        via pthread_exit() routine
     | 
  
  
    | 
    thread-specific data
     | 
  
  
    | 
    time slicing
     | 
  
  
    | 
    unlocking mutexes #1
     | 
  
  
    | 
    unlocking mutexes #2
     | 
  
  
    | 
    unlocking POSIX Threads global mutex
     | 
  
  
    | 
    unlocking the POSIX Threads global mutex
     | 
  
  
    | 
    using a stack guard area
     | 
  
  
    | 
    using a stack overflow warning area
     | 
  
  
    | 
    using dynamic memory
     | 
  
  
    | 
    using stack memory
     | 
  
  
    | 
    using static memory
     | 
  
  
    | 
    waiting for another thread to terminate #1
     | 
  
  
    | 
    waiting for another thread to terminate #2
     | 
  
  
    | 
    waiting on mutexes
     | 
  
  
    | 
    wakeups for
     | 
  
  
    | 
        broadcasting #1
     | 
  
  
    | 
        broadcasting #2
     | 
  
  
    | 
        signaling #1
     | 
  
  
    | 
        signaling #2
     | 
  
  
    | 
        signaling #3
     | 
  
  
    | 
        signaling #4
     | 
  
  
    | 
    yielding processor to another thread #1
     | 
  
  
    | 
    yielding processor to another thread #2
     | 
  
  
    | 
    yielding to another thread
     | 
  
  
    | 
Throughput scheduling policy
     | 
  
  
    | 
Time, expiration, obtaining #1
     | 
  
  
    | 
Time, expiration, obtaining #2
     | 
  
  
    | 
Time slicing, of threads
     | 
  
  
    | 
tis interface
     | 
  
  
    | 
    See Thread-independent services (tis) interface
     | 
  
  
    | 
tis_cond_broadcast() routine
     | 
  
  
    | 
tis_cond_destroy() routine
     | 
  
  
    | 
tis_cond_init() routine
     | 
  
  
    | 
tis_cond_signal() routine
     | 
  
  
    | 
tis_cond_timedwait() routine
     | 
  
  
    | 
tis_cond_wait() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_getspecific() routine
     | 
  
  
    | 
tis_get_expiration() routine
     | 
  
  
    | 
tis_io_complete() routine
     | 
  
  
    | 
tis_key_create() routine
     | 
  
  
    | 
tis_key_delete() routine
     | 
  
  
    | 
tis_lock_global() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_mutex_destroy() routine
     | 
  
  
    | 
tis_mutex_init() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_mutex_lock() routine
     | 
  
  
    | 
tis_mutex_trylock() routine
     | 
  
  
    | 
tis_mutex_unlock() routine
     | 
  
  
    | 
tis_once() routine
     | 
  
  
    | 
tis_read_lock() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_read_trylock() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_read_unlock() routine
     | 
  
  
    | 
tis_rwlock_destroy() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_rwlock_init() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_self() routine
     | 
  
  
    | 
tis_setcancelstate() routine
     | 
  
  
    | 
tis_setspecific() routine
     | 
  
  
    | 
tis_sync() routine
     | 
  
  
    | 
tis_testcancel() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_unlock_global() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_write_lock() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_write_trylock() routine
     | 
  
  
    | 
    using
     | 
  
  
    | 
tis_write_unlock() routine
     | 
  
  
    | 
tis_yield() routine
     | 
  
  
    | 
Tru64 UNIX operating system, using POSIX Threads with
     | 
  
  
    | 
TRY macro
     | 
  
  
    | 
    restrictions
     | 
  
  
    | 
Two-level scheduling
     | 
  
  
    | 
    under OpenVMS Alpha
     | 
  
  
    | 
    under Tru64 UNIX
     |