Είναι το παράλληλο ForEach ασύγχρονο;
Είναι το παράλληλο ForEach ασύγχρονο;

Βίντεο: Είναι το παράλληλο ForEach ασύγχρονο;

Βίντεο: Είναι το παράλληλο ForEach ασύγχρονο;
Βίντεο: Αρχιτεκτονική Η/Υ ΙΙ - 5A 2024, Απρίλιος
Anonim

Η όλη ιδέα πίσω Παράλληλο . Για κάθε () είναι ότι έχετε ένα σύνολο νημάτων και κάθε νήμα επεξεργάζεται μέρος της συλλογής. Όπως παρατηρήσατε, αυτό δεν λειτουργεί ασυγχρονισμός - await, όπου θέλετε να απελευθερώσετε το νήμα για τη διάρκεια του ασυγχρονισμός κλήση. Για κάθε (), το οποίο υποστηρίζει ασύγχρονος Το καθήκον είναι καλά.

Σχετικά με αυτό, πώς περιμένετε να ολοκληρωθεί το παράλληλο foreach;

Δεν χρειάζεται να κάνεις κάτι ιδιαίτερο, Παράλληλο . Για κάθε () θα Περίμενε μέχρι να γίνουν όλες οι διακλαδισμένες εργασίες του πλήρης . Από το νήμα κλήσης μπορείτε να το αντιμετωπίσετε ως μια ενιαία σύγχρονη πρόταση και, για παράδειγμα, να το τυλίξετε μέσα σε ένα try/catch. Δεν το χρειάζεσαι με αυτό Παράλληλο.

Ομοίως, είναι το foreach ασύγχρονο; Δεν είναι ασύγχρονος . Μπλοκάρει. Όσοι έμαθαν για πρώτη φορά μια γλώσσα όπως η Java, η C ή η Python πριν δοκιμάσουν το JS θα μπερδευτούν όταν προσπαθούν να βάλουν μια αυθαίρετη καθυστέρηση ή μια κλήση API στο σώμα βρόχου τους.

Πέρα από αυτό, πώς συνεχίζεις παράλληλα foreach;

Όταν μετατρέψατε τον βρόχο σας σε έναν συμβατό ορισμό για το Παράλληλο . Για κάθε Λογικά, κατέληξες να κάνεις το σώμα της δήλωσης λάμδα. Λοιπόν, αυτή είναι μια ενέργεια που καλείται από το Παράλληλο λειτουργία. Αντικαταστήστε λοιπόν να συνεχίσει με return, και διακοπή με δηλώσεις Stop() ή Break().

Είναι παράλληλη η εργασία WhenAll;

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

Συνιστάται: