Το .NET 4 περιλαμβάνει έναν νέο χώρο ονομάτων, το System.Threading.Tasks, ο οποίος περιέχει που αφαιρούν τη λειτουργικότητα νημάτων. Χρησιμοποιήστε το ThreadPool στο παρασκήνιο. Μια εργασία αντιπροσωπεύει την εργασία μιας μονάδας που πρέπει να ολοκληρωθεί. Η εργασία αυτής της μονάδας μπορεί να εκτελεστεί σε ξεχωριστό νήμα ή μια εργασία μπορεί να ξεκινήσει συγχρονισμένα, κάτι που απαιτεί αναμονή για το κύριο νήμα συντονισμού. Η χρήση εργασιών όχι μόνο σας δίνει ένα επίπεδο αφαίρεσης, αλλά σας δίνει επίσης μεγάλο έλεγχο στα υποκείμενα νήματα. Οι εργασίες προσφέρουν μεγάλη ευελιξία όσον αφορά τον προγραμματισμό της εργασίας που πρέπει να γίνει. Για παράδειγμα, μπορείτε να ορίσετε μια συνεχή εργασία – ποια εργασία πρέπει να γίνει μετά την ολοκλήρωση μιας εργασίας. Αυτό μπορεί να κάνει τη διαφορά μεταξύ μιας επιτυχημένης εργασίας και όχι. Επιπλέον, οι εργασίες μπορούν να ταξινομηθούν σε μια ιεραρχία. Για παράδειγμα, μια γονική εργασία μπορεί να δημιουργήσει μια νέα θυγατρική εργασία. Αυτό δημιουργεί μια εξάρτηση, έτσι ώστε εάν ακυρώσετε τη γονική εργασία, η θυγατρική εργασία θα ακυρωθεί επίσης.
Σήμερα, είναι δημοφιλές να χρησιμοποιούνται μέθοδοι εκτέλεσης εργασιών και είναι υψηλής απόδοσης και δεν ξέρω πού είναι η απόδοση της εργασίας.
Δοκίμασα μόνος μου το Task and Thread και πιστεύω ότι το Task είναι πολύ αργό, γεγονός που επηρεάζει πολύ την απόδοση και ο κωδικός δοκιμής είναι ο εξής:
Κάνουμε βρόχο στη μέθοδο 1000 φορές και, στη συνέχεια, η μέθοδος μπλοκάρει για 100 χιλιοστά του δευτερολέπτου και το αποτέλεσμα της δοκιμής είναι το εξής:
Έκβαση:
Η εκτέλεση του νήματος διαρκεί 188 χιλιοστά του δευτερολέπτου
Η εκτέλεση της εργασίας διαρκεί 14.671 χιλιοστά του δευτερολέπτου
Η διαφορά ταχύτητας μεταξύ των δύο είναι 78 φορές!!
Η εργασία είναι πολύ αργή, δεν ξέρω γιατί συμβαίνει αυτό, υπάρχει κάποιο πρόβλημα με τον κωδικό δοκιμής μου ή τι; Ελπίζω να μπορείτε να εξηγήσετε γιατί συμβαίνει αυτό...
|