Sobes.tech
Junior — Middle

Μπορείτε να απαριθμήσετε τις βασικές primitive συγχρονισμού που παρέχονται από τη βιβλιοθήκη standard;

sobes.tech AI

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

Βιβλιοθήκη προεπιλογής C# (στο χώρο ονομάτων System.Threading) διαθέτει τις ακόλουθες βασικές primitive συγχρονισμού:

  • lock (Monitor) — παρέχει αποκλειστική πρόσβαση σε πόρο, μπλοκάροντας ένα τμήμα κώδικα.
  • Mutex — ένα mutex μεταξύ διεργασιών, χρησιμοποιείται για συγχρονισμό μεταξύ διεργασιών.
  • Semaphore και SemaphoreSlim — περιορίζουν τον αριθμό των νημάτων που έχουν πρόσβαση σε πόρο ταυτόχρονα.
  • AutoResetEvent και ManualResetEvent — γεγονότα για σήμα μεταξύ νημάτων.
  • ReaderWriterLockSlim — επιτρέπει σε πολλά νήματα να διαβάζουν ταυτόχρονα έναν πόρο, αλλά μπλοκάρει την εγγραφή.
  • SpinLock — ελαφρύ primitive για σύντομες αποκλεισμούς χωρίς αλλαγή πλαισίου.

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

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // κώδικας που πρέπει να εκτελείται μόνο από ένα νήμα κάθε φορά
    }
}