Sobes.tech
Junior — Middle

Ποια μηχανισμοί συγχρονισμού νημάτων γνωρίζετε και μπορείτε να χρησιμοποιήσετε στα έργα σας;

sobes.tech AI

Απάντηση από AI

Στην C# χρησιμοποιούνται διάφοροι μηχανισμοί για τον συγχρονισμό νημάτων:

  • lock — απλός τρόπος αποκλεισμού μιας κρίσιμης ενότητας κώδικα.
  • Mutex — διαμοιρασμένος αποκλεισμός μεταξύ διεργασιών, χρήσιμος όταν πρέπει να συγχρονίσεις την πρόσβαση μεταξύ διαφορετικών διεργασιών.
  • Semaphore και SemaphoreSlim — επιτρέπουν τον περιορισμό του αριθμού νημάτων που εκτελούν ταυτόχρονα μια συγκεκριμένη ενότητα κώδικα.
  • Monitor — πιο ευέλικτος μηχανισμός, στον οποίο βασίζεται το lock.
  • ManualResetEvent και AutoResetEvent — για σήμα μεταξύ νημάτων.
  • Συγχρονισμένες συλλογές από το namespace System.Collections.Concurrent — παρέχουν ασφαλή πρόσβαση σε συλλογές από νημάτα.

Παράδειγμα χρήσης του lock:

private readonly object _lockObj = new object();

public void IncrementCounter()
{
    lock(_lockObj)
    {
        // Κρίσιμη ενότητα
        counter++;
    }
}