Spinlock
Această intrare sau secțiune despre subiectul bazelor de date nu menționează sursele necesare sau cei prezenți sunt insuficienți . |
În informatică, un spinlock sau chiar spinning este o tehnică de programare care folosește un ciclu de așteptare ocupat pentru a implementa rutina de așteptare a blocării . Tehnica constă în verificarea periodică a blocării blocării , efectuarea unui test care poate avea loc la intervale de timp prestabilite sau în cel mai scurt timp posibil permis de sistem .
argumente pro şi contra
Implementarea unui spinlock poate avea loc în întregime în contextul activ sarcinii , fără a fi nevoie de a apela funcții ale sistemului de operare sau de execuție mediu ; util în sistemele multiprocesor în care schimbarea contextului este mult mai costisitoare (în termeni de timp). Principalul dezavantaj este risipa enormă de timp de calcul care poate fi contracarată doar cu costul extinderii intervalelor de verificare, prelungind astfel și așteptarea medie a firelor sau proceselor care concurează pentru blocare .
Alternative
Aproape toate sistemele de operare moderne oferă o interfață dedicată pentru implementarea blocărilor ca parte a API - ului . Funcțiile native ale sistemului de operare sunt mult mai eficiente decât blocurile rotative și nu au probleme de sincronie inerente acestora, deoarece utilizează direct sistemul de monitorizare a planificatorului . Mediile de rulare ale limbajelor de programare la nivel înalt implementează blocaje prin funcțiile corespunzătoare ale sistemului de operare .
Aplicații practice
Utilizarea spinlock-urilor poate fi necesară atunci când mediul de execuție nu oferă o interfață adecvată pentru sincronizare prin intermediul blocărilor . Acesta este cazul unor sisteme de operare în timp real care nu au un programator potrivit pentru multitasking . Pe platformele multiprocesor , unde comunicația între firele care rulează pe diferite procesoare poate dura sute sau mii de cicluri de ceas , este, de asemenea, obișnuit să se utilizeze blocuri de expirare hibrid, care, dacă nu sunt întrerupte într-un timp limitat sau într-un număr predeterminat de iterații, expiră delegând așteptarea la un monitor real.