Στην καθημερινή ανάπτυξη, μπορούμε να χρησιμοποιήσουμε ουρές, οι οποίες είναι μια δομή αποθήκευσης που μπορεί να επιτύχει "first-in, first-out".
Σενάρια εφαρμογής: γράψτε αρχεία καταγραφής, στείλτε email κ.λπ
Εάν πρέπει να καταγράψουμε το αρχείο καταγραφής διεπαφής κάθε χρήστη που ζητά τα δεδομένα μας, δεν χρειάζεται να γράφουμε ένα αρχείο καταγραφής κάθε φορά που το ζητά ο χρήστης, μπορούμε να βάλουμε το περιεχόμενο καταγραφής στην ουρά και να αφήσουμε άλλα νήματα να το εκτελέσουν, ώστε να μην επηρεαστεί η αποτελεσματικότητα της εφαρμογής.
Ένα άλλο πλεονέκτημα είναι ότι η προσθήκη δεδομένων στην ουρά σε περίπτωση ταυτόχρονης χρήσης, η χρήση ενός μόνο νήματος για την εκτέλεση των δεδομένων της ουράς μπορεί να αποφύγει πολλές εξαιρέσεις, εάν η ταυτόχρονη χρήση (πολλαπλών νημάτων), η πρόσβαση στο ίδιο φυσικό αρχείο θα προκαλέσει εξαιρέσεις. (ανάλογα με τη διαθεσιμότητα)
Καθολική προσέγγιση ουράς:
Αυτή είναι μια αφηρημένη κλάση και πρέπει να κληρονομήσετε αυτήν την κλάση αφαίρεσης και να εφαρμόσετε τη μέθοδο αφαίρεσης Εκτέλεση. Επειδή δεν ξέρω τι είδους δεδομένα θέλετε να επεξεργαστείτε, εδώ χρησιμοποιούνται γενικά, δηλαδή η οντότητα είναι τύπου συμβολοσειράς, οι παράμετροι μεθόδου είναι τύπου συμβολοσειράς και τα δεδομένα που επεξεργάζεστε είναι δεδομένα τύπου συμβολοσειράς.
Η ασφαλής ουρά νημάτων ConcurrentQueue διασφαλίζει ότι δεν θα υπάρχουν εξαιρέσεις σε ένα περιβάλλον πολλαπλών νημάτων.
ManualResetEvent για τον έλεγχο του σήματος του νήματος,Στο παρελθόν, ελέγχαμε την ουρά για δεδομένα κάθε λίγα δευτερόλεπτα ή λεπτάΤώρα, προσθέτουμε τα δεδομένα στην ουρά και χρειάζεται μόνο να περάσουμε ένα σήμα!
Χρήση:
(Τέλος)
|