Διαφορά μεταξύ του Mutex και του Semaphore Διαφορά μεταξύ
Mutex vs Semaphore
Ένα mutex είναι ανάλογο με ένα μόνο κλειδί σε ένα δωμάτιο. Ένα πρόσωπο που κρατάει το κλειδί, το οποίο είναι ανάλογο με ένα νήμα, είναι το μόνο που μπορεί να έχει πρόσβαση στο δωμάτιο. Το άτομο με την πρόσβαση θα πρέπει στη συνέχεια να δώσει το κλειδί στο επόμενο άτομο στη σειρά. Επομένως, ένα mutex μπορεί να απελευθερωθεί μόνο από το νήμα που το αποκτά.
Ένα mutex χρησιμοποιείται κανονικά για τη σειριοποίηση της πρόσβασης σε ένα τμήμα ενός εισερχόμενου κώδικα "ένα είδος κώδικα που δεν μπορεί να εκτελεστεί από πολλά θέματα ταυτόχρονα. Μόνο ένα νήμα επιτρέπεται σε μια ενότητα. Αυτό αναγκάζει τα άλλα νήματα στην ουρά να περιμένουν. Πριν αποκτήσει πρόσβαση σε ένα νήμα, θα πρέπει να περιμένει μέχρι να βγει από το νήμα προτού εγκαταλείψει το τμήμα.
Χρησιμοποιώντας την ίδια αναλογία σε mutex, semaphores είναι ο αριθμός παρόμοιων κλειδιών που μπορούν να έχουν πρόσβαση στον ίδιο αριθμό δωματίων με παρόμοια κλειδαριές. Ένα σηματοφόρο ή η αξία ενός αριθμού semafor θα εξαρτηθεί από τον αριθμό των ατόμων (κλωστές) που εισέρχονται ή εξέρχονται από το δωμάτιο. Εάν υπάρχουν 5 δωμάτια και όλα είναι κατειλημμένα, τότε ο αριθμός των σηματοφόρων είναι μηδέν. Εάν δύο εγκαταλείψουν το δωμάτιο, τότε ο αριθμός είναι δύο και τα δύο πλήκτρα δίνονται στα επόμενα δύο στην ουρά.
Με αυτό που λέγεται, τα σηματοφόρα μπορούν ταυτόχρονα να σηματοδοτούνται από οποιοδήποτε νήμα ή διαδικασία και είναι ιδανικά για εφαρμογές που απαιτούν συγχρονισμό. Παρ 'όλα αυτά, τα σηματοφόρα χρησιμοποιούνται για να περιορίσουν αποτελεσματικά τον αριθμό των ταυτόχρονων χρηστών ενός κοινού πόρου βασισμένου στη μέγιστη καταμέτρηση του σημαιριού.Έτσι, βασικά, ένα mutex μπορεί να θεωρηθεί ως ένα σηματοφόρο που έχει αξία ενός.
Η μείωση και η αύξηση του σηματοφορέα εξαρτώνται από το αν τα θέματα ζητούν πρόσβαση στον κοινό πόρο ή φεύγουν από το τμήμα.
Τα mutex προορίζονται να χρησιμοποιηθούν μόνο για αμοιβαίο αποκλεισμό και τα δυαδικά σηματοφόρα προορίζονται να χρησιμοποιηθούν για αμοιβαίο αποκλεισμό και κοινοποίηση συμβάντων. Παρόλο που είναι πολύ όμοια όσον αφορά την εφαρμογή και τη γενική σημασιολογία, χρησιμοποιούνται διαφορετικά.
Περίληψη:
1. Το Mutex χρησιμοποιείται συνήθως για τη σειριοποίηση της πρόσβασης σε έναν κοινό πόρο ενώ ένα σηματοφόρο είναι ένας αριθμός ταυτόχρονων προσπελάσεων.
2. Το Mutex είναι σαν ένα σηματοφόρο με έναν αριθμό.
3. Το Mutex επιτρέπει σε ένα μόνο νήμα να έχει πρόσβαση ενώ τα σηματοφόρα μπορούν ταυτόχρονα να σηματοδοτούνται από οποιοδήποτε νήμα ή διαδικασία.
4. Τα σηματοφόρα είναι ιδανικά για συγχρονισμό και χρησιμοποιούνται συχνά για την ειδοποίηση συμβάντων και τον αμοιβαίο αποκλεισμό, ενώ το mutex εφαρμόζεται μόνο για αμοιβαίο αποκλεισμό.