tis, tis_intro - Introduction to Thread-Independent Services
(tis)
Thread-independent services (tis) routines compose an HPproprietary
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 environment, 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 environment is not burdened by the
run-time synchronization that is necessary when the same
code is run in a threaded environment. When threads are
active, tis routines provide the necessary thread-safe
synchronization.
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 [Toc] [Back]
Obtains a value representing a desired expiration time.
Calls a one-time initialization routine that can be executed.
Obtains the identifier of the calling thread.
Thread Cancellation Routines [Toc] [Back]
Changes the calling thread's cancelability state. Creates
a cancellation point in the calling thread.
Thread-Specific Data Key Routines [Toc] [Back]
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 [Toc] [Back]
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 [Toc] [Back]
Wakes all threads waiting on the specified condition variable.
Destroys the specified condition variable object.
Initializes a condition 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 [Toc] [Back]
Acquires the specified read-write lock for read access.
Attempts to acquire the specified read-write lock for read
access; returns immediately 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)
[ Back ] |