dllockinit - register thread locking methods with the dynamic linker
Lb libc
Threads packages can call
dllockinit ();
at initialization time to register locking functions for the dynamic
linker to use.
This enables the dynamic linker to prevent multiple
threads from entering its critical sections simultaneously.
The
Fa context
argument specifies an opaque context for creating locks.
The
dynamic linker will pass it to the
Fa lock_create
function when creating the locks it needs.
When the dynamic linker
is permanently finished using the locking functions (e.g., if the
program makes a subsequent call to
dllockinit ();
to register new locking functions) it will call
Fa context_destroy
to destroy the context.
The Fa lock_create argument specifies a function for creating a read/write lock. It must return a pointer to the new lock.
The Fa rlock_acquire and Fa wlock_acquire arguments specify functions which lock a lock for reading or writing, respectively. The Fa lock_release argument specifies a function which unlocks a lock. Each of these functions is passed a pointer to the lock.
The Fa lock_destroy argument specifies a function to destroy a lock. It may be NULL if locks do not need to be destroyed. The Fa context_destroy argument specifies a function to destroy the context. It may be NULL if the context does not need to be destroyed.
Until
dllockinit ();
is called, the dynamic linker protects its critical sections using
a default locking mechanism which works by blocking the
SIGVTALRM
SIGPROF
and
SIGALRM
signals.
This is sufficient for many application level threads
packages, which typically use one of these signals to implement
preemption.
An application which has registered its own locking
methods with
dllockinit ();
can restore the default locking by calling
dllockinit ();
with all arguments
NULL
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |