Sunteți pe pagina 1din 1

Programarea aplicatiilor in timp-real Laborator 4

Mecanisme de sincronizare. Blocari cu excludere mutuala (mutex)


Mutex-ul (engl. mutual exclusion lock) reprezinta cel mai simplu mecanism de sincronizare. Un mutex este folosit pentru a asigura accesul exclusiv la o zona de date folosita in comun de mai multe fire de executie. Un mutex se poate afla in doua stari:

incuiat (engl. locked), prin apelul functiei pthread_mutex_lock (se specifica in acest fel inceputul sectiunii critice); liber (engl. unlocked), prin apelul functiei pthread_mutex_unlock (specificand sfarsitul sectiunii critice).

Un singur fir de executie poate incuia un mutex la un moment dat. Firele de executie care incearca sa incuie un mutex deja incuiat se vor bloca pana cand firul de executie va fi deblocat. Cand firul de executie elibereaza mutexul, se va debloca urmatorul fir de executie (in ordinea prioritatii) care astepta eliberarea lui, va incuia mutexul si va deveni proprietarul acestuia. In acest fel, firele de executie se succed prin regiunea critica in ordinea prioritatii. Interfata C / POSIX pentru mutex-uri ("Programarea Aplicatiilor in Timp-Real", sectiunea 3.3, pag. 110):
int pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t* attr); int pthread_mutex_lock(pthread_mutex_t* mutex); int pthread_mutex_unlock(pthread_mutex_t* mutex) int pthread_mutex_trylock(pthread_mutex_t* mutex) int pthread_mutex_destroy(pthread_mutex_t* mutex)

Desfasurarea lucrarii: Exemplu: utilizarea mutex-urilor pentru accesul firelor de executie la resurse partajate (Contor.c). Bibliografie: Sectiunea 3.3 (pag. 110), Sisteme in Timp-Real. Teorie si Practica