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++;
}
}