Spinlock

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Στην τεχνολογία λογισμικού το spinlock είναι μηχανισμός κλειδώματος ενός νήματος/thread που θέλει να αποκτήσει πρόσβαση σε ένα πόρο. Κατά τον μηχανισμό αυτόν, το νήμα περιμένει "τρέχοντας" ατέρμονα βρόχο επανάληψης (loop/spin), με τον οποίο ελέγχει την κατάσταση του κλειδώματος. Το νήμα καθώς εκτελεί τον βρόχο αυτόν βρίσκεται σε αναμονή (ονομάζεται η κατάσταση αυτή busy waiting). Όταν το νήμα αποκτήσει πρόσβαση στο κλείδωμα, την διατηρεί μέχρι να ολοκληρωθεί ο κώδικας εκτέλεσης του νήματος. Ένα spin lock στην πράξη είναι μηχανισμός κλειδώματος mutex σε κάποιους κοινούς πόρους, ο οποίος στην πράξη μπλοκάρει ένα νήμα κάνοντάς το να βρίσκεται σε κατάσταση busy-waiting καθώς εκτελεί ατέρμονα βρόχο ελέγχου κλειδώματος (το spinlocκ).[1][2]

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. Cesati, Daniel P. Bovet, Marco (2005). Understanding the Linux Kernel (3rd ed. έκδοση). Boston, MA: Safari Tech Books Online. σελίδες 188–200. ISBN 978-0-596-00565-8. CS1 maint: Extra text (link)
  2. Rago, W. Richard Stevens, Stephen A. (2013). Advanced programming in the UNIX environment (3d ed. έκδοση). [S.l.]: Addison-Wesley Professional. σελίδες 417–418. ISBN 978-0-321-63773-4. CS1 maint: Extra text (link)