Junior — Middle
Τι ακριβώς μεταδίδεται ή χρησιμοποιείται στη μηχανισμό κλειδώματος (lock) στον πολυνηματικό προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Στο μηχανισμό κλειδώματος (lock) στον προγραμματισμό πολλαπλών νημάτων, χρησιμοποιείται ένα αντικείμενο ή primitive συγχρονισμού που διασφαλίζει αποκλειστική πρόσβαση σε έναν κοινόχρηστο πόρο. Όταν ένα νήμα αποκτά το κλείδωμα, άλλα νήματα που προσπαθούν να το αποκτήσουν θα περιμένουν μέχρι να απελευθερωθεί.
Δηλαδή, υπό το "lock" περνάει ή χρησιμοποιείται:
- Η κατάσταση του κλειδώματος (κατειλημμένο/ελεύθερο).
- Ο μηχανισμός αναμονής (π.χ., μια ουρά νήματων που περιμένουν την απελευθέρωση).
Στα C#, η λέξη-κλειδί lock λειτουργεί με ένα αντικείμενο που χρησιμεύει ως δείκτης κλειδώματος. Παράδειγμα:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// Κώδικας που πρέπει να εκτελείται μόνο από ένα νήμα κάθε φορά
}
}
Εδώ, στο lock, περνάει μια αναφορά στο αντικείμενο _lockObj, το οποίο χρησιμοποιείται για τη διαχείριση της πρόσβασης. Εσωτερικά, η CLR χρησιμοποιεί αυτό το αντικείμενο για τον έλεγχο της κατάστασης του κλειδώματος.