Junior — Middle
Μπορείς να απαριθμήσεις τους υπάρχοντες τύπους αμοιβαίας εξαίρεσης (mutex);
sobes.tech AI
Απάντηση από AI
Υπάρχουν διάφοροι τύποι mutex (αμοιβαίας αποκλεισμού) σε C/C++, οι οποίοι διαφέρουν στην υλοποίηση και τις δυνατότητές τους:
- Απλός (κανονικός) mutex — βασικός μηχανισμός κλειδώματος που διασφαλίζει αποκλειστική πρόσβαση σε πόρο.
- Αναδρομικός mutex — επιτρέπει στο ίδιο νήμα να αποκτήσει το mutex πολλές φορές χωρίς να μπλοκάρει.
- Mutex με χρονικό όριο — mutex που μπορεί να επιχειρηθεί με χρονικό όριο.
- Mutex με έλεγχο σφαλμάτων — mutex που ελέγχει σφάλματα, π.χ., επανειλημμένη απόκτηση από το ίδιο νήμα προκαλεί σφάλμα.
Στη βιβλιοθήκη standard C++11 υπάρχουν οι ακόλουθοι τύποι:
std::mutexstd::recursive_mutexstd::timed_mutexstd::recursive_timed_mutex
Παράδειγμα χρήσης του std::recursive_mutex:
#include <mutex>
std::recursive_mutex mtx;
void recursive_function(int count) {
mtx.lock();
if (count > 0) {
recursive_function(count - 1);
}
mtx.unlock();
}
Η επιλογή του τύπου mutex εξαρτάται από την εργασία και τις απαιτήσεις κλειδώματος.