tis(3)tis(3)NAME
tis, tis_intro - Introduction to Thread-Independent Services (tis)
DESCRIPTION
Thread-independent services (tis) routines compose an HP-proprietary
interface to the DECthreads multitasking library. The tis interface
provides services that assist with the development of thread-safe
libraries.
Thread synchronization can involve significant run-time cost, which is
undesirable in a nonthreaded environment. In the nonthreaded environ‐
ment, the tis interface enables you to build thread-safe libraries that
are efficient, yet provide the necessary synchronization when called
from a threaded environment.
When threads are not active within the process, tis routines execute
only the minimum steps necessary: code running in a nonthreaded envi‐
ronment is not burdened by the run-time synchronization that is neces‐
sary when the same code is run in a threaded environment. When threads
are active, tis routines provide the necessary thread-safe synchroniza‐
tion.
The tis objects created using this interface are fully interchangeable
with DECthreads Pthreads (POSIX 1003.1c) objects. So, a mutex can be
created by using static initialization (or using tis_mutex_init(3)) and
can be locked, the DECthreads core library (libpthread.so) subsequently
activated, and the mutex unlocked. Keys created by tis_key_create(3)
are valid when a threaded run-time environment is loaded.
Note that errno is NOT used by the tis routines. To indicate errors,
the tis routines return integer values indicating the type of error.
In a nonthreaded environment, condition variables should not be used to
guard operations (for example, with tis_cond_wait(3)). In a threaded
environment, the guidelines for using the DECthreads Pthread routines
also pertain to the use of the corresponding tis routine.
The tis routines can be classified into the following associated
groups: General routines Thread cancellation routines Thread-specific
data key routines Mutex routines Condition variable routines Read-write
lock routines
General Routines
Obtains a value representing a desired expiration time. Calls a one-
time initialization routine that can be executed. Obtains the identi‐
fier of the calling thread.
Thread Cancellation Routines
Changes the calling thread's cancelability state. Creates a cancella‐
tion point in the calling thread.
Thread-Specific Data Key Routines
Obtains the data associated with the specified thread-specific data
key. Generates a unique thread-specific data key. Deletes a thread-
specific data key. Sets the value associated with the specified
thread-specific key.
Mutex Routines
Locks the DECthreads global mutex. Destroys the specified tis mutex
object. Initializes a tis mutex object. Locks the specified tis mutex
if not already locked. Tries to lock the specified tis mutex. Unlocks
the specified tis mutex. Unlocks the DECthreads global mutex.
Condition Variable Routines
Wakes all threads waiting on the specified condition variable.
Destroys the specified condition variable object. Initializes a condi‐
tion variable object. Wakes at least one thread that is waiting on the
specified condition variable. Causes the calling thread to wait for
the specified condition variable to be signaled or broadcast, such that
it will awake after a specified period of time. Causes the calling
thread to wait for the specified condition variable to be signaled or
broadcast.
Read-Write Lock Routines
Acquires the specified read-write lock for read access. Attempts to
acquire the specified read-write lock for read access; returns immedi‐
ately if already locked. Unlocks the specified read-write lock already
acquired for read access. Destroys the specified read-write lock
object. Initializes a read-write lock object. Acquires the specified
read-write lock for write access. Attempts to acquire the specified
read-write lock for write access; returns immediately if already
locked. Unlocks the specified read-write lock already acquired for
write access.
tis(3)