Διαφορά μεταξύ του Mutex και του συμβάντος Διαφορά μεταξύ

Anonim

Mutex vs Event

Στο C #, υπάρχουν πολλές διαφορετικές επιλογές συγχρονισμού νήματος. Οι δύο πιο ευρέως χρησιμοποιούμενες είναι mutex και γεγονός. Ακριβώς ποια ακριβώς είναι η διαφορά μεταξύ αυτών των δύο; Ποια είναι η καλύτερη επιλογή;

Η επιλογή συμβάντος είναι σε θέση να δώσει στα νήματα την επιλογή να μπλοκάρει μέχρι να μεταδοθεί ένα συμβάν, επομένως το όνομα "συμβάν. "Είναι το ίδιο με το να βάζεις κάτι σε ύπνο και μόνο να το ξυπνάς όταν συμβαίνει κάτι σημαντικό. Τα συμβάντα είναι διαφορετικά από τα mutexes επειδή τα mutexes δεν έχουν την επιλογή ή τη λειτουργία σηματοδότησης. Τα γεγονότα είναι σε θέση να καθαρίσουν το σήμα όταν κάποιος που ήταν σε θέση να περιμένει σε αυτό έχει ξυπνήσει. Ακόμα και τα API μπορούν να επιτρέψουν την επιλογή να μπλοκάρει μέχρι να σηματοδοτηθούν ένα ή όλα τα διαφορετικά συμβάντα. Επιπλέον, τα συμβάντα είναι αντικείμενα του πυρήνα. Δεν είναι "ελαφρύτερα" σε σύγκριση με τα mutexes. Ένα συμβάν είναι βασικά ένα αντικείμενο πυρήνα που έχει δύο καταστάσεις. Κανονικά, ένα συμβάν σηματοδοτεί την έλευση ενός γεγονότος και μερικές φορές ακόμη και το τέλος μιας λειτουργίας εισόδου / εξόδου.

Το "Mutex" σημαίνει αμοιβαίο αποκλεισμό. Πρόκειται για μια μορφή μηχανισμού συντονισμού για τους πόρους που μοιράζονται. Σκεφτείτε το ως μια μορφή συναλλαγής. Δεν είστε υποχρεωμένοι να περιμένετε παρόλο που θέλετε να αποκτήσετε πρόσβαση σε μερικούς κοινόχρηστους πόρους (μόνο στην περίπτωση που οι άλλοι έχουν ήδη πρόσβαση σε αυτόν) που εμποδίζετε. Ένα mutex αποτελείται από δύο κράτη αν και υπάρχει για να θέσει σε εφαρμογή έναν αμοιβαίο αποκλεισμό. Αυτό συμβαίνει όταν θέλετε να προστατεύσετε ένα κομμάτι κώδικα που συνήθως ενημερώνει έναν κοινόχρηστο πόρο από το τμήμα όπου ζητείται το mutex στο τμήμα στο οποίο θα απελευθερωθεί. Αυτό οδηγεί στο γεγονός ότι κανένα άλλο νήμα δεν μπορεί να περάσει από το τμήμα.

Οι άνθρωποι που προσπάθησαν να προσομοιώσουν μια εκδήλωση με τη βοήθεια ενός mutex έπρεπε να αντιμετωπίσουν το πρόβλημα στο οποίο αμέσως μόλις αποκτήθηκε η κλειδαριά ή το συμβάν σηματοδοτήθηκε, το άτομο κρατά όλους τους άλλους έξω μέχρι να απελευθερωθεί η κλειδαριά. Αυτή δεν είναι η σημασιολογία ενός γεγονότος που σηματοδοτείται. Ένα συμβάν μπορεί να παραμείνει αναρτημένο και μια μορφή πύλης θα είναι διαθέσιμη για όλες τις δοκιμές νήματος σε περίπτωση που δεν υπάρχουν κλειδαριές. Το Mutex που δεσμεύεται για συγχρονισμό μεταξύ διαδικασιών βρίσκεται στο αντικείμενο του πυρήνα. Τα συμβάντα που έγιναν για συγχρονισμό πολλαπλών καναλιών με μία μέθοδο είναι σε αντικείμενο λειτουργίας χρήστη.

Το αντικείμενο Mutex είναι πολύ βαρύ και πολύ γενικό. Τα αντικείμενα του συμβάντος είναι πολύ ελαφρύτερα. Ο συγχρονισμός λειτουργίας χρήστη χρησιμοποιείται στις περισσότερες περιπτώσεις λόγω του ότι δίνει λιγότερους κύκλους CPU. Το Mutex μοιάζει πολύ με μια κρίσιμη ενότητα και χρησιμοποιείται για τον συγχρονισμό της πρόσβασης στους πόρους που μοιράζονται. Τα γεγονότα έχουν εντελώς διαφορετική λειτουργία επειδή χρησιμοποιούνται για συγχρονισμό εργασιών ή για διαχείριση προγραμματισμού εργασιών για μερικούς ανθρώπους.

Οι εκδηλώσεις είναι περισσότερο μεταβλητές συνθηκών, σε αντίθεση με το Mutex, το οποίο μοιάζει με μια οθόνη

σε κάποια ορολογία, ή μπορεί να είναι μια παραδοσιακή μορφή σηματοφόρου / mutex.

Περίληψη:

1. Η επιλογή συμβάντος είναι σε θέση να δώσει στα θέματα τη δυνατότητα να μπλοκάρουν μέχρι να μεταδοθεί ένα συμβάν, οπότε το όνομα "event". "

2. Ένα συμβάν είναι βασικά ένα αντικείμενο πυρήνα που έχει δύο καταστάσεις. Κανονικά, ένα συμβάν σηματοδοτεί την έλευση ενός γεγονότος και μερικές φορές ακόμη και το τέλος μιας λειτουργίας εισόδου / εξόδου.

3. Το "Mutex" αντιπροσωπεύει τον Αμοιβαίο Αποκλεισμό. Πρόκειται για μια μορφή μηχανισμού συντονισμού για τους πόρους που μοιράζονται.

4. Το Mutex που δεσμεύεται για συγχρονισμό μεταξύ διαδικασιών βρίσκεται στο αντικείμενο του πυρήνα. Τα συμβάντα που έγιναν για συγχρονισμό πολλαπλών καναλιών με μία μέθοδο είναι σε αντικείμενο λειτουργίας χρήστη.

5. Τα γεγονότα είναι περισσότερο μεταβλητές συνθηκών, σε αντίθεση με το Mutex, το οποίο μοιάζει περισσότερο με μια οθόνη

σε κάποια από την ορολογία, ή μπορεί να είναι μια παραδοσιακή μορφή σηματοφόρου / mutex.