Ο αντικειμενοστραφής προγραμματισμός C#, παρέχει πολλές φιλικές προς το χρήστη λειτουργίας, τώρα αυτό το StringDictionary είναι μια συλλογή κλάσεων που ειδικεύονται στην αποθήκευση συμβολοσειρών ως κλειδιά και τιμές, η έννοια αυτής της κλάσης είναι: Η C# γνωρίζει ότι η συμβολοσειρά στον τύπο τιμής χρησιμοποιείται αρκετά ευρέως, άλλοι τύποι τιμών μπορούν επίσης να μετατραπούν σε αντίστοιχους τύπους συμβολοσειρών, αυτό είναι το νόημα αυτής της συλλογής, αλλά μπορείτε ακόμα να χρησιμοποιήσετε άλλα αντικείμενα συλλογής για να την αντικαταστήσετε, αλλά δώστε προσοχή σε ένα σημείο, Εάν πρόκειται για αποθήκευση συμβολοσειρών, αυτό μπορεί να μειώσει την απώλεια μνήμης και να μειώσει το χρόνο που απαιτείται για την εκτέλεση του προγράμματος
Το SyncRoot μπορεί να χρησιμοποιηθεί για το συγχρονισμό της πρόσβασης στο StringDictionary
Για να το θέσω ωμά, είναι η έννοια της κλειδαριάς, ας γράψουμε ένα πρόγραμμα για να το δοκιμάσουμε:
Ο κωδικός έχει ως εξής:
Έχουμε δύο νήματα ταυτόχρονα για να προσθέσουμε δεδομένα στο λεξικό StringDictionary,
Η διαφορά χρόνου εκτέλεσης μεταξύ του πρώτου νήματος και του δεύτερου νήματος είναι ένα δευτερόλεπτο, προκειμένου να διευρυνθεί η διαφορά ώρας και να αποφευχθεί η πολύ γρήγορη εκτέλεση.
Μπορείτε να δείτε ότι τα νήματα έχουν πάει στις δύο μεθόδους και κατά την προσθήκη του δεύτερου κομματιού δεδομένων, περίμεναν να προστεθούν τα πρώτα δεδομένα πριν προσθέσουν τα δεύτερα δεδομένα και ο χρόνος προσθήκης είναι πολύ γρήγορος.
Παρακάτω, θα το γράψουμε με διαφορετικό τρόπο για να γίνει πιο κατανοητό:
Ανοίγουν 3 νήματα και προστίθενται τα δεδομένα και τα 3 νήματα εκτελούνται σχεδόν ταυτόχρονα, αλλά όταν προστίθενται τα δεδομένα, το καθένα έχει διαφορά 10 δευτερολέπτων.
Συνοπτικά, όταν έχουμε πρόσβαση πολλαπλών νημάτων, μπορούμε να χρησιμοποιήσουμε το SyncRoot για να διασφαλίσουμε την ασφάλεια των νημάτων
|