PC_MAGAS Δημοσ. 22 Ιουνίου 2022 Δημοσ. 22 Ιουνίου 2022 Στα μαθήματα PHP που σχεδιάζω δείχνω ότι μπορείς να έχεις μια ατέρμονη λούπα, τα θετικά και τα αρνητικά όμως δεν μπορώ να σκευτό ένα πρακτικό παράδειγμα που η ατέρμονη λούπα μπορεί να το λύσει. Θέλω να δώσω ένα έμπρακτο παράδειγμα που να δείχνει ότι το να έχεις ατέρμονη λούπα με σωστά breaks actually έχει νόμηα και σκοπό. Μπορείτε να σκευτείτε κάποιο;
MrRush Δημοσ. 23 Ιουνίου 2022 Δημοσ. 23 Ιουνίου 2022 (επεξεργασμένο) Τα 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. Επεξ/σία 23 Ιουνίου 2022 από MrRush 1
Ponous Δημοσ. 23 Ιουνίου 2022 Δημοσ. 23 Ιουνίου 2022 Συμφωνώ σε μεγάλο βαθμό με τον 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) κ.α. 4
k33theod Δημοσ. 23 Ιουνίου 2022 Δημοσ. 23 Ιουνίου 2022 Αυτό θα μπορούσε κάποιος να το πει infinite loop
dpolal Δημοσ. 23 Ιουνίου 2022 Δημοσ. 23 Ιουνίου 2022 13 λεπτά πριν, k33theod είπε Αυτό θα μπορούσε κάποιος να το πει infinite loop Ναί είναι. Αν και είναι τόσο «απλοϊκός» κώδικας που θυμίζει το κλασσικό: 10 PRINT «HELLO WORLD» 20 GOTO 10 😄
DrKo Δημοσ. 23 Ιουνίου 2022 Δημοσ. 23 Ιουνίου 2022 Infinite loop είναι το entry point πολλών λειτουργικών συστημάτων, ειδικά για embedded systems. Υπάρχει ένα `for(;;)` και από κάτω γίνεται όλο το event handling.
παπι Δημοσ. 29 Ιουνίου 2022 Δημοσ. 29 Ιουνίου 2022 Οχι οτι η php ειναι για αυτη τη δουλεια, αλλα ενα καλο παραδειγμα ειναι τα sockets. Κατα 99% αμα εχεις blocking socket, η accept θα ειναι σε infinity loop
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα