Utilizarea unui obiect atribut mutex

Cea mai interesantă este instalarea unui atribut asociat cu ceea ce ar trebui să fie un mutex: privat sau partajat. Mutexurile închise sunt împărțite între firele din același proces. Puteți fie să declare mutexul global, fie să organizați transferul unui descriptor între fire. Mutexurile comune sunt utilizate de fire care au acces la memoria în care este mapat mutex-ul. Un astfel de mutex poate împărți fluxurile diferitelor procese. Principiul de funcționare al mutexelor închise și partajate este prezentat în Fig. 5.5. Dacă trebuie să separați mutexul de firele diferitelor procese, acesta trebuie plasat în memorie, care este comun acelor procese. Biblioteca POSIX definește mai multe funcții pentru alocarea memoriei între obiecte utilizând fișiere mapate în memorie și obiecte de memorie partajată. În procese, mutexurile pot fi folosite pentru a proteja partițiile critice care accesează fișierele, canalele, memoria partajată și dispozitivele externe.













Utilizând semaphorele mutex pentru a gestiona secțiunile critice

Mutexurile sunt folosite pentru a gestiona secțiunile critice ale proceselor și a firelor pentru a preveni apariția unor condiții de "rasă". Mutexurile evită condițiile de "curse", realizând un acces consistent la secțiunea critică. Luați în considerare codul din Lista 5.1. Aceasta demonstrează executarea a două fire. Pentru a-și proteja partițiile critice, se utilizează mutexuri.

// Lista 5.1. Utilizarea mutexelor pentru protejare

// secțiuni critice ale firelor

pthread_t ThreadA, ThreadB; pthread_mutex_t Mutex, -pthread_mutexattr_t MutexAttr;

void * task1 (void * X)

pthread_mutex_lock (Mutex); // Secțiunea critică a codului.

void * task2 (void * X)

// Secțiunea critică a codului.

pthread_mutex_unlos (Mu t ex); retur (0);







Trimiteți-le prietenilor: