resurse partajate
Imaginați-vă un avion de pasageri în zbor, și în ea o resursă împărtășită de toți, ca o toaletă. Creatorii de aeronave presupune că doar o singură persoană poate ocupa această cameră. Primul care a luat, de închidere de acces (blocare) pentru a bea pentru toți ceilalți. Înainte Pasagerii care doresc să beneficieze de această resursă, fie poate aștepta cu răbdare pentru eliberarea, sau după o anumită perioadă de timp (time-out) pentru a reveni la locul său și să continue să facă ceea ce el a fost ocupat înainte de eveniment. Decizia cu privire la ceea ce a alege și de cât timp să aștepte, să ia un pasager. Blocarea generează resurse ineficiente de timp al doilea ocupant exploatație este de așteptat coadă, și care a ales o tactică diferită.
Revenind la procesele multithreaded, observăm că în cazul în care nici un bloc de resurse, devine posibila corupere a datelor. Imaginați-vă că un flux de proces trece prin înregistrările bazei de date, creșterea salariului fiecărui angajat cu 10%, și un alt fir, în același timp, se schimbă codurile poștale în legătură cu introducerea noului standard. Sunt de acord că este rezonabil să se combine aceste două lucrări într-un singur proces, în scopul de a crește productivitatea. Ce se poate întâmpla dacă nu blocați accesul la înregistrările din modificarea acesteia? Primul flux citit de înregistrare (toate câmpurile), și este ocupat de calcul creșterea (să zicem, de la 80.000 $ la $ 85.000 de). În acest moment, al doilea fir citește aceeași înregistrare pentru a schimba zip. În această situație, se poate întâmpla următoarele: primul fir păstrează o înregistrare modificată la noua valoare salarială, iar al doilea, revenind un record cu modificări index, restabilind valoarea salariului, iar angajatul va avea nici o creștere. Acest lucru se datorează faptului că cele două fluxuri nu pot avea acces la piesele de înregistrare și, prin urmare, funcționează cu toată înregistrarea, ci doar să modifice unele dintre domeniile sale.