Junior
Ποιος είναι ο σκοπός της λέξης-κλειδιού lock στη C#;
sobes.tech AI
Απάντηση από AI
Η λέξη-κλειδί lock χρησιμοποιείται για την εξασφάλιση της ασφάλειας των νημάτων μέσω της δημιουργίας μιας κρίσιμης ενότητας.
Οι κύριοι στόχοι:
- Μπλοκάρισμα πρόσβασης: Διασφαλίζει ότι μόνο ένα νήμα μπορεί να εκτελέσει τον κώδικα μέσα στο μπλοκ
lockσε μια δεδομένη στιγμή. - Προστασία κοινών πόρων: Αποτρέπει τις συνθήκες αγώνα όταν πολλά νήματα έχουν ταυτόχρονη πρόσβαση σε δεδομένα ή πόρους, όπως πεδία κλάσης, συλλογές κ.λπ.
- Συγχρονισμός νημάτων: Χρησιμοποιείται για την οργάνωση της σειράς εκτέλεσης των λειτουργιών σε σενάρια πολλαπλών νημάτων.
Παράδειγμα χρήσης:
private static readonly object _lockObject = new object(); // Αντικείμενο κλειδώματος
public void UpdateCounter()
{
// Αρχή κρίσιμης ενότητας
lock (_lockObject)
{
// Ο κώδικας μέσα σε αυτό το μπλοκ μπορεί να εκτελεστεί μόνο από ένα νήμα κάθε φορά
counter++;
}
// Τέλος κρίσιμης ενότητας
}
Είναι σημαντικό να χρησιμοποιείτε ένα εξειδικευμένο αντικείμενο (_lockObject στο παράδειγμα) για το κλείδωμα, και όχι το this ή το typeof(TypeName), για να αποφύγετε πιθανά προβλήματα αμοιβαίου αποκλεισμού. Συνιστάται η χρήση αντικειμένων τύπου object ή System.Threading.ReaderWriterLockSlim για πιο πολύπλοκα σενάρια.