int pthread_mutex_init(pthread_mutex_t *restrict mutex,
const pthread_mutexattr_t *restrict attr);
int pthread_mutex_destroy(pthread_mutex_t *mutex);
int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);
int pthread_mutexattr_init(pthread_mutexattr_t *attr);
Si los attr son NULL, será un mutex con atributos por defecto. Se inicializa a desbloqueado y además debemos destruirlo a desbloqueado.
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
La función "pthread_mutex_trylock" intenta tomar un mutex. Si ya está bloqueado se devuelve un código de error EBUSY (puede resultar útil para evitar condiciones de deadlock).
Al intentar desbloquear se pueden devolver dos tipos de errores:
- Si el mutex ya está desbloqueado.
- Si el mutex está tomado por otra hebra.
No hay comentarios:
Publicar un comentario