Función POSIX |
Descripción |
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. |
pthread_mutex_destroy(....) | Destruye la variable (de tipo pthread_mutex_t) usada para manejo de exclusión mutua, o candado 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 resultado.
#include <stdlib.h>
int randsafe(double *ranp) {
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
int error= ERROR_CODE;
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_destroy(...) |
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 |