Estratto del documento

Pthread_mutex_init e pthread_mutex_destroy

Il documento descrive le funzioni pthread_mutex_init e pthread_mutex_destroy, utilizzate per inizializzare o distruggere un mutex. Queste funzioni fanno parte delle specifiche dello Single UNIX ® Specification, Versione 2, Copyright © 1997 The Open Group.

Sintassi

#include <pthread.h>

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);

int pthread_mutex_destroy(pthread_mutex_t *mutex);

pthread_mutex_t = PTHREAD_MUTEX_INITIALIZER;

Descrizione

La funzione pthread_mutex_init() inizializza il mutex referenziato da mutex con gli attributi specificati da attr. Se attr è NULL, vengono utilizzati gli attributi predefiniti del mutex; l'effetto è lo stesso di passare l'indirizzo di un oggetto di attributi del mutex predefinito. Al termine dell'inizializzazione con successo, lo stato del mutex diventa inizializzato e sbloccato. Tentare di inizializzare un mutex già inizializzato provoca un comportamento indefinito.

La funzione pthread_mutex_destroy() distrugge l'oggetto mutex referenziato da mutex; l'oggetto mutex diventa, di fatto, non inizializzato. Un'implementazione può far sì che pthread_mutex_destroy() imposti l'oggetto referenziato da mutex a un valore non valido. Un oggetto mutex distrutto può essere reinizializzato usando pthread_mutex_init(); i risultati di un riferimento all'oggetto dopo che è stato distrutto sono indefiniti. È sicuro distruggere un mutex inizializzato che è sbloccato. Tentare di distruggere un mutex bloccato provoca un comportamento indefinito.

Nei casi in cui gli attributi del mutex predefiniti sono appropriati, il macro PTHREAD_MUTEX_INITIALIZER può essere utilizzato per inizializzare mutex che sono allocati staticamente. L'effetto è equivalente all'inizializzazione dinamica tramite una chiamata a pthread_mutex_init() con il parametro attr specificato come NULL, eccetto che non vengono eseguiti controlli di errore.

Valore di ritorno

Se l'operazione è completata con successo, le funzioni pthread_mutex_init() e pthread_mutex_destroy() restituiscono zero. Altrimenti, viene restituito un numero di errore per indicare l'errore. I controlli di errore [EBUSY] e [EINVAL], se implementati, agiscono come se fossero eseguiti immediatamente all'inizio dell'elaborazione della funzione e causano un ritorno d'errore prima di modificare lo stato del mutex specificato da mutex.

Errori

La funzione pthread_mutex_init() fallirà se:

  • [EAGAIN]
Anteprima
Vedrai una selezione di 1 pagina su 2
Sistemi operativi - Syscall pthread_mutex_init Pag. 1
1 su 2
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher N. A. di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Cotroneo Domenico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community