Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 26065|Απάντηση: 2

[Πηγή] Μια σύντομη ανάλυση της χρήσης του .net/C# thread pool ThreadPool

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 21/6/2017 9:43:20 π.μ. | | | |
Τι είναι η πισίνα με νήματα; Γιατί να χρησιμοποιήσετε πισίνες με νήματα; Πώς να χρησιμοποιήσετε τις πισίνες με νήματα;

1. Τι είναι η πισίνα με νήματα;

        Η κλάση ThreadPool του .NET Framework παρέχει μια ομάδα νημάτων που μπορεί να χρησιμοποιηθεί για την εκτέλεση εργασιών, την αποστολή στοιχείων εργασίας, το χειρισμό ασύγχρονων εισόδων/εξόδων, την αναμονή για λογαριασμό άλλων νημάτων και το χειρισμό χρονόμετρων. Τι είναι λοιπόν μια πισίνα με νήματα; Η ομάδα νημάτων είναι στην πραγματικότητα μια "πισίνα" που αποθηκεύει αντικείμενα νημάτων και παρέχει ορισμένες βασικές μεθόδους, όπως ο ορισμός του ελάχιστου/μέγιστου αριθμού νημάτων στην πισίνα, η ουρά των μεθόδων που πρέπει να εκτελεστούν κ.λπ. Το ThreadPool είναι μια στατική κλάση, επομένως μπορεί να χρησιμοποιηθεί απευθείας χωρίς τη δημιουργία αντικειμένων.

2. Γιατί να χρησιμοποιήσετε πισίνες με νήματα; Ποια είναι τα οφέλη;

        Ο επίσημος ιστότοπος της Microsoft αναφέρει τα εξής: Πολλές εφαρμογές δημιουργούν μεγάλο αριθμό νημάτων που βρίσκονται σε αδράνεια, περιμένοντας να συμβούν συμβάντα. Υπάρχουν επίσης πολλά θέματα που μπορεί να πέσουν σε χειμερία νάρκη μόνο και μόνο για να ξυπνούν περιοδικά για να κάνουν δημοσκόπηση για αλλαγμένες ή ενημερωμένες πληροφορίες κατάστασης. Ομάδες νημάτων, που σας επιτρέπουν να χρησιμοποιείτε τα νήματα πιο αποτελεσματικά μέσω μιας ομάδας νημάτων εργαζομένων που διαχειρίζεται το σύστημα.

        Για να το θέσω απλά, κάθε νέο νήμα πρέπει να καταλαμβάνει χώρο στη μνήμη και άλλους πόρους, και με τόσα πολλά νέα νήματα, πολλά από αυτά είναι αδρανή ή περιμένουν να απελευθερωθούν πόροι. Υπάρχουν πολλά νήματα που κάνουν μόνο κάποια μικρή δουλειά περιοδικά, όπως ανανέωση δεδομένων κ.λπ., τα οποία είναι πολύ σπάταλα για να σχεδιαστούν και είναι σπάνιο ένας μεγάλος αριθμός νημάτων να ξεσπάσει στον πραγματικό προγραμματισμό και στη συνέχεια να τελειώσει σε σύντομο χρονικό διάστημα. Ως εκ τούτου, προτάθηκε η έννοια των ομάδων νημάτων. Εάν η εφαρμογή υποβάλει άλλη αίτηση στο χώρο συγκέντρωσης νημάτων, το νήμα σε κατάσταση εκκρεμότητας ενεργοποιείται και εκτελεί την εργασία χωρίς να δημιουργήσει νέο νήμα, γεγονός που εξοικονομεί πολλά γενικά έξοδα. Το σύστημα θα καταστρέψει αυτόματα τα νήματα μόνο όταν ο αριθμός των νημάτων φτάσει τον μέγιστο αριθμό νημάτων. Επομένως, η χρήση ομάδων νημάτων μπορεί να αποφύγει μεγάλα έξοδα δημιουργίας και καταστροφής, να έχει καλύτερη απόδοση και σταθερότητα και, δεύτερον, οι προγραμματιστές μπορούν να επικεντρωθούν σε άλλες εργασίες παραδίδοντας νήματα στη διαχείριση συστήματος.


3. Πώς μπορώ να χρησιμοποιήσω τις ομάδες νημάτων;

Στην πραγματικότητα, οι πισίνες με νήματα είναι πολύ απλές στη χρήση, ως εξής

α. Ορίστε τη μέγιστη και την ελάχιστη ομάδα νημάτων:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Ορίστε τον αριθμό των αιτημάτων για μια ομάδα νημάτων που μπορούν να είναι ενεργά ταυτόχρονα. Όλα τα αιτήματα που είναι μεγαλύτερα από αυτόν τον αριθμό θα παραμείνουν στην ουρά μέχρι να γίνει διαθέσιμο το νήμα του χώρου συγκέντρωσης νημάτων. Μπορείτε επίσης να ορίσετε τον ελάχιστο αριθμό νημάτων.

β. Προσθέστε εργασίες στο χώρο συγκέντρωσης νημάτων:

ThreadPool.QueueUserWorkItem(new WaitCallback(όνομα μεθόδου));

ή
ThreadPool.QueueUserWorkItem(new WaitCallback(όνομα μεθόδου), παράμετρος);

Για παράδειγμα, εάν το πολύ 5 νήματα στη δεξαμενή νημάτων εκτελεί μια μέθοδο 60 φορές, ο συνολικός μισθός για 5 χρόνια έχει ως εξής:



Εάν δεν χρησιμοποιείτε τη συγκέντρωση νημάτων, ίσως χρειαστεί να ανοίξετε 60 νήματα για να εκτελέσετε τη μέθοδο Run() ασύγχρονα, κάτι που είναι σπατάλη πόρων χώρου. Τώρα χρησιμοποιούμε έως και 5 νήματα, τα οποία μπορούν να εκτελεστούν σε 1 δευτερόλεπτο και η απόδοση και η απόδοση είναι πολύ καλές.





Προηγούμενος:Κωδικός πλήρους οθόνης χάρτη Baidu (κωδικός πλήρους οθόνης div)
Επόμενος:Ειδοποίηση επεξεργασίας πρόσβασης αποκλεισμού παράνομων διευθύνσεων URL του Alibaba Cloud
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 21/6/2017 9:47:12 π.μ. |

Οι πισίνες με νήματα έχουν αυτά τα πλεονεκτήματα:

1. Στο multi-threading, η ομάδα νημάτων μπορεί να μειώσει τον αριθμό των νημάτων που δημιουργούμε και να επαναχρησιμοποιήσει εύλογα τα νήματα στη δεξαμενή νημάτων. Επειδή τα νήματα με νήματα στη δεξαμενή νημάτων βρίσκονται σε κατάσταση αναμονής για ανάθεση.

2. Δεν χρειάζεται να διαχειρίζεστε και να διατηρείτε νήματα με μικρή διάρκεια ζωής, δεν χρειάζεται να διαθέτετε πόρους σε αυτά όταν δημιουργούνται και να αποδεσμεύετε πόρους αφού ολοκληρώσουν τις εργασίες τους.

3. Η ομάδα νημάτων θα βελτιστοποιήσει τα νήματα στην πισίνα σύμφωνα με τα τρέχοντα χαρακτηριστικά του συστήματος.

Μειονεκτήματα των πισινών νημάτων:

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

Δημοσιεύτηκε στις 6/12/2017 11:28:49 π.μ. |
Σημειώστε το πρώτο, για να μάθετε αργότερα
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com