Función POSIX |
Descripción |
pthread_mutex_destroy |
Destruye la variable (de tipo
pthread_mutex_t) usada para manejo de exclusión mutua, o candado
mutes |
pthread_mutex_init |
permite dar las condiciones
iniciales a un candado mutex |
pthread_mutex_lock |
Permite solicitar acceso al
mutex, el hilo se bloquea hasta su obtención |
pthread_mutex_trylock |
permite solicitar acceso al
mutex, el hilo retorna inmediatamente. El valor retornado indica
si otro hilo lo tiene. |
pthread_mutex_unlock |
Permite liberar un mutex. |
Sin Mutex | Con Mutex | ||
---|---|---|---|
|
/* Note scope of variable and mutex are the same */ |
#include <pthread.h>Ejemplo: programa que calcula la suma de valores aleatorios de la función sin(), en varios hilos, los suma muestra su resultados.
#include <stdlib.h>
int randsafe(double *ranp) {
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
int error;
if (error = pthread_mutex_lock(&lock))
return error;
*ranp = (rand() + 0.5)/(RAND_MAX + 1.0);
return pthread_mutex_unlock(&lock);
}
Función POSIX |
Descripción |
pthread_rwlock_init |
permite dar las condiciones
iniciales a un candado de lectura y escritura. |
pthread_rwlock_destry |
Destruye la variable (de tipo pthread_rw_lock_t) usada para manejo de exclusión mutua, o candado read-write. |
pthread_rwlock_wrlock |
Permite solicitar acceso de escritura al
candado, el hilo se bloquea hasta su obtención |
pthread_rwlock_rdlock |
permite
solicitar acceso de lectura al candado, el hilo accede si el
candado está libre o si sólo ha sido concedido para lectura. |
pthread_rwlock_unlock |
Permite liberar un candado read-write. |
othread_rwlock_tryrdlock | Permite obtener el candado (lock) si está libre y retorna cero, en otro caso retorna EBUSY |
pthread_rwlock_trywrlock | Permite obtener el candado (lock) si está libre y retorna cero, en otro caso retorna EBUSY |