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)
{
// κώδικας που πρέπει να εκτελείται μόνο από ένα νήμα κάθε φορά
}
}