Sobes.tech
Junior — Middle

Μπορείς να απαριθμήσεις τους βασικούς μηχανισμούς συγχρονισμού νημάτων και διαδικασιών;

sobes.tech AI

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

Οι βασικοί μηχανισμοί συγχρονισμού νημάτων και διεργασιών σε C# περιλαμβάνουν:

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

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

private readonly object _locker = new object();

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