Προς το περιεχόμενο

Παράδειγμα ατέρμονης λούπας


PC_MAGAS

Προτεινόμενες αναρτήσεις

Στα μαθήματα PHP που σχεδιάζω δείχνω ότι μπορείς να έχεις μια ατέρμονη λούπα, τα θετικά και τα αρνητικά όμως δεν μπορώ να σκευτό ένα πρακτικό παράδειγμα που η ατέρμονη λούπα μπορεί να το λύσει. Θέλω να δώσω ένα έμπρακτο παράδειγμα που να δείχνει ότι το να έχεις ατέρμονη λούπα με σωστά breaks actually έχει νόμηα και σκοπό.

 

Μπορείτε να σκευτείτε κάποιο;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Τα loops τρέχουν τόσο γρήγορα που το να έχεις near infinite loop ακόμα και με breakpoints είναι ασύμφορο. 

Φεύγοντας από μονοπάτια PHP, infinite loop μπορείς να πεις ότι είναι το render loop ενός προγράμματος γραφικών (πχ ένα παιχνίδι) που κάνει συγκεκριμένα βήματα για κάθε frame και ζει όσο ζει το πρόγραμμα. Εκεί, τα actions που έχεις μέσα στο loop απαιτούν GPU/CPU resources που κάνουν το κάθε iteration να παίρνει κάποια ώρα (πχ 100 loops per sec που παράγουν 100 frames).

Άλλο παράδειγμα είναι όταν ένας client κάνει poll ένα API αλλά εκεί δεν το αφήνεις στην μοίρα του να τρέχει όσο γρήγορα θέλει, του βάζεις κάποιο interval και ένα timeout οπότε με interval 1s και timeout 60s, tρέχει 61 φορές, δηλαδή όχι ακριβώς infinitely.

Επεξ/σία από MrRush
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Συμφωνώ σε μεγάλο βαθμό με τον MrRush. Ναι όντως σε παιχνιδια και προγράμματα γραφικών θα το δεις.

Μιας και η php αφορά το web, θα αναφέρω ακόμη ένα παράδειγμα μιας ατέρμονης λούπας που είναι χρήσιμα. Όσο αφορά το event-driven development ή τους servers, έχουμε συνεχώς μια ατέρμονη λούπα στο παρασκήνιο. Για παράδειγμα, όταν ένας server λέμε πως είναι "ανοικτός" και "ακούει για σήματα", στην πραγματικότητα δεν είναι τίποτα άλλο από ένα infinite loop το οποίο ελέγχει κατά πόσο έχει λάβει ο υπολογιστής κάποιο "request" σε κάποια θύρα (για περισσότερα, δες socket programming).

Το άλλο, στο event-driven development (χρησιμοποιείται και από javascript στο front-end και γενικά σε GUI applications) συνεχώς τρέχει ένα infinite loop το οποίο ακούει για events ή σήματα και ακολούθως πράττει ανάλογα. Ως χρήστες ενός API, εμείς νιώθουμε πως ο κώδικας μας τρέχει με το που ενεργοποιήσουμε κάποιο event (π.χ click). Στην πραγματικότητα όμως, υπάρχει μια ατέρμονη λούπα από πίσω η οποία ελέγχει αν κάναμε κλικ (μεταξύ άλλων)

Αυτά μπορώ να θυμηθώ στα γρήγορα όσο αφορά το web. Άμα το ψάξεις και αλλού όμως, βρίσκεις και πολλά άλλα infinite loops και σε επίπεδο OS (signals) κ.α.

  • Like 4
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

13 λεπτά πριν, k33theod είπε

Αυτό θα μπορούσε κάποιος να το πει infinite loop

 

Screenshot (58).png

Ναί είναι.

Αν και είναι τόσο «απλοϊκός» κώδικας που θυμίζει το κλασσικό:

10 PRINT «HELLO WORLD»
20 GOTO 10

😄

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Infinite loop είναι το entry point πολλών λειτουργικών συστημάτων, ειδικά για embedded systems.

Υπάρχει ένα `for(;;)` και από κάτω γίνεται όλο το event handling. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οχι οτι η php ειναι για αυτη τη δουλεια, αλλα ενα καλο παραδειγμα ειναι τα sockets. Κατα 99% αμα εχεις blocking socket, η accept θα ειναι σε infinity loop

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...