#include <ShareLock.h>
Diagramma di interrelazione per utils::ShareLock:
Membri pubblici | |
ShareLock () | |
Crea un oggetto di tipo Lock, allocando le risorse necessarie al suo utilizzo. Continua... | |
~ShareLock () | |
Distrugge un oggetto di tipo Lock, liberando le risorse utilizzate. Continua... | |
void | lock (const string &resource, bool exclusive=false) |
Eseguito prima dell'utilizzo della risorsa effettua le seguenti operazioni: Verifica la disponibilità della risorsa, rimanendo in attesa sino a quando essa sia disponibile. Continua... | |
void | unlock (const string &resource) |
Eseguito al termine dell'utilizzo di una risorsa effettua le seguenti operazioni: Libera la risorsa. Continua... |
Dato un insieme di risorse critiche identificate ogniuna con una string, consente di garantire l'accesso ad ogniuna di esse in modo esclusivo o condiviso ad un singolo thread di esecuzione. La politica di assegnazione delle risorse è la seguente:
Definizione alla linea 49 del file ShareLock.h.
|
Crea un oggetto di tipo Lock, allocando le risorse necessarie al suo utilizzo.
Definizione alla linea 27 del file ShareLock.cc. 00027 { 00028 pthread_mutex_init(&mut, NULL); 00029 pthread_cond_init(&cond, NULL); 00030 } |
|
Distrugge un oggetto di tipo Lock, liberando le risorse utilizzate.
Definizione alla linea 32 del file ShareLock.cc. 00032 { 00033 pthread_mutex_destroy(&mut); 00034 pthread_cond_destroy(&cond); 00035 } |
|
Eseguito prima dell'utilizzo della risorsa effettua le seguenti operazioni: Verifica la disponibilità della risorsa, rimanendo in attesa sino a quando essa sia disponibile.
Definizione alla linea 55 del file ShareLock.cc. 00055 { 00056 pthread_mutex_lock(&mut); 00057 while(isbusy(resource, ex)) 00058 pthread_cond_wait(&cond, &mut); 00059 alloc(resource, ex); 00060 pthread_mutex_unlock(&mut); 00061 } |
|
Eseguito al termine dell'utilizzo di una risorsa effettua le seguenti operazioni: Libera la risorsa.
Definizione alla linea 63 del file ShareLock.cc. 00063 { 00064 pthread_mutex_lock(&mut); 00065 free(resource); 00066 pthread_cond_broadcast(&cond); 00067 pthread_mutex_unlock(&mut); 00068 } |