Función POSIX |
Descripción |
pthread_mutex_destroy |
Destruye la variable (de tipo
pthread_mutex_t) usada para manejo de explusió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);
}