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