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

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

Δημοσ.

https://en.wikipedia.org/wiki/Reentrancy_(computing)
 

A subroutine that is directly or indirectly recursive should be reentrant.

 
Τι μαθαίνουμε μόνο από αυτή την πρόταση:

  • "Recursive" και "reentrant" είναι επίθετα, αναφέρονται σε functions
  • Είναι όμως τελείως διαφορετικά πράγματα, εφόσον μια function που είναι recursive "should" be (αλλά δεν είναι εγγυημένο) reentrant -- ισχύει και το αντίθετο, μια που είναι reentrant δεν είναι απαραίτητο να είναι recursive
  • Υπάρχει "directly" (fibonacci) και "indirectly" (αυτό που περιγράφεις) recursive

 

 

 

 

http://stackoverflow.com/questions/2799023/what-exactly-is-a-reentrant-function
 

4.1. Are all recursive functions reentrant?
No.
In multithreaded cases, a recursive function accessing a shared resources could be called by multiple threads at the same moment, resulting in bad/corrupted data.
In singlethreaded cases, a recursive function could use a non-reentrant function (like infamous strtok), or use global data without handling the fact the data is already in use. So you function is recursive because it calls itself directly or indirectly, but it can still be recursive-unsafe.

 

  • Μία από τα ίδια

 

 

 

https://www.quora.com/When-is-a-function-reentrant-How-does-that-relate-to-it-being-thread-safe 
 

A function is reentrant if it can be invoked while already in the process of executing. That is, a function is reentrant if it can be interrupted in the middle of execution (for example, by a signal or interrupt) and invoked again before the interrupted execution completes.

  • Ο ορισμός του reentrant δεν έχει καμία αναγκαστική αναφορά στο να καλεί μια function τον εαυτό της άμεσα ή έμμεσα
  • Σημειωτέο ότι σε αντίθεση με το προηγούμενο quote, εδώ δεν αναφέρει τη λέξη "safe" ή κάποια αντίστοιχη, αλλά εννοείται: "invoked (safely)" κλπ.
  • Like 1
  • Απαντ. 505
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

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

@ Μ2000

 

Μην εκτίθεσαι κι άλλο, λάθος κάνεις, ο defacer έχει δίκιο.

 

Μια ακολουθία κλήσεων της μορφής   A()->B()->Γ()->Α()->B()->Γ()->... λέγεται έμμεση αναδρομή

(υπό την έννοια ότι η A() καλεί τον εαυτό της μέσω άλλης ρουτίνας, όχι κατευθείαν).

Θυμάμαι δύο βιβλία που το γράφουν αυτό ως ορισμό, ξεκάθαρα,

χωρίς κανένα περιθώριο αμφισβήτησης ή παρερμηνείας.

 

Η ημιμάθεια είναι χειρότερη από την αμάθεια - ειδικά όταν επιμένεις στο λάθος.

Πες "δεν το ήξερα" και τέλος....

 

-

Επεξ/σία από V.I.Smirnov
  • Like 2
Δημοσ.

Υπάρχει ακόμα καιρός για να το ψάξετε το πράγμα. Δεν εκτίθεμαι καθόλου.

Πχ το ζήτημα των νημάτων που αναφέρθηκε παραπάνω, με την χρήση γενικών μεταβλητών μπορεί να επιτρέπει αναδρομική κλήση αλλά όχι επανείσοδο. Ο Defacer πιάνει μια περιγραφή ενός προβλήματος, μιας κακής χρήσης κλήσης, για να δείξει ότι η γνώμη του εκείνο το should be είναι όπως του είχε πει ο καθηγητής αγγλικών...όχι must...Δεν ξέρω τι πίνει ο άνθρωπος, αλλά αν κάποιος την τρίχα την κάνει τριχιά, αυτός είναι ο Defacer.

Λοιπόν στη Μ2000 χρησιμοποιώ κατά κόρο την επανείσοδο (ορίστε και ελληνική λέξη), δηλαδή Smirnov καλό είναι να συζητάμε επί της ουσίας, όχι επί του υποσύνολου των βιβλίων που τυχόν διαβάσαμε, σε σχέση με το τι υπάρχει, και έχω λοιπόν στο κώδικα μια γενική μεταβλητή που επιβιώνει σε νήματα, επειδή κάθε φορά που εκτελείται ένα μπλοκ κώδικα κρατάει αντίγραφο, και το επαναφέρει.

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

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

Δημοσ.

Ο Μ2000 έχει ανακαλύψει τον τρόπο να βγαίνει κερδισμένος σε οποιαδήποτε συζήτηση. Έχει τη δική του γλώσσα η οποία κάνει ότι δεν κάνουν όλες οι υπόλοιπες. Δεν έχει σημασία που κανείς άλλος δεν γνωρίζει τη γλώσσα. Αρκεί που αυτός λέει ότι κάνει όσα κάνει. Συμπέρασμα; Δεν υπάρχει απολύτως κανένας τρόπος να κάνεις λογική συζήτηση μαζί του. Πάντα όταν στριμώχνεται θα καταφεύγει στον μαγικό κόσμο της M2000. Είναι το τελευταίο καταφύγιο πριν παραδεχτεί ότι έκανε λάθος. Γιατί ο Θεός μπορεί να κάνει λάθος. Ο M2000 ποτέ!

Δημοσ.

Άλλη μια δήλωση μη συμπάθειας από τον Elorant...Στις 100 δίνουμε και κουλούρι.

Το ότι δεν ασχολείσαι με την Μ2000, δεν είναι δικό μου θέμα. Δεν με ενδιαφέρει το προσωπικό κέρδος στη συζήτηση. Δεν θέλω να κατέβω για το ΔΣ του φόρουμ.....

Πέρα από την Δ.Μ.Σ. έχεις κάτι για το θέμα; Έχεις εμπειρία από τη χρήση συναρτήσεων με αναδρομή ή με επανείσοδο, εκτός σχολικού περιβάλλοντος;

Δημοσ.

Άρα δηλαδή ο Μ2000 αναφέρεται στο ότι μπορεί μια συνάρτηση Α να καλεί μια συνάρτηση Β, η οποία με τη σειρά της καλεί πάλι την Α.

Ενώ rentrant είναι μια συνάρτηση η οποία μπορεί να κληθεί ενώ ήδη τρέχει, πριν προλάβει να ολοκληρώσει.

 

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

Δημοσ.

Την Αλίκη πίσω από τον μαγικό καθρέπτη τη θυμάσαι;

Κάπου εκεί συνάντησε τον Humpty Dumpty.

Το κορίτσι προσπαθούσε να συζητήσει μαζί του αλλά δεν έβγαινε νόημα

επειδή ο τύπος έδινε αυθαίρετα στις λέξεις ότι νόημα του κάπνιζε. 

 

Έχεις καταλήξει να είσαι ο Humpty Dumpty του Insomnia....

 

-

Δημοσ.

There is a pattern here.

  • Ανοίγει κάποιο thread για το θέμα (Α)
  • Ο OP βρίσκει λύση στο πρόβλημα του
  • M2000 enters the scene. Hey OP ξέρεις ότι μπορείς να κάνεις και το (Β) ;
  • 2^10 posts που εξηγούν στον M2000 ότι το (Β) που λέει δεν έχει σχέση με το (Α) ή στην γενική περίπτωση το (Β) είναι λάθος ή δεν υπάρχει. (Παλιά σ αυτό το σημείο ήταν gradual το escalation, πλέον όχι)
  • O M2000 προσπαθεί να τους βγάλει όλους τρελούς, συνήθως ζητώντας κώδικα σε κάτι τετριμμένο ή/και χαζό που πλέον δεν έχει να κάνει ούτε με το (Α) ούτε με το (Β), σ αυτό το σημείο το point της κουβέντας έχει χαθεί. Το δε namedropping, ασύστολο.
  • Τα επιχειρήματα τελειώνουν, ήρθε η ώρα για τα μεγάλα μέσα.
  • Κοιτάξτε, εγώ ιδέες δίνω και ακόμα μαθαίνω, δεν είμαστε όλοι φωστήρες σαν τον {EnterInsomniaUsernameWhoUsedLogic}. Επίσης δεν ξέρω τι λέτε εσείς αλλά εγώ στην M2000 το έχω κάνει (ή θα το κάνει μέσα σε 2 μέρες) και δουλεύει και έτσι είναι και αν δεν είναι εγώ έτσι το έχω ονομάσει, αντί ν ασχολείστε με θεωρίες και να κάνετε copy paste δοκιμάστε να γράψετε καμία γλώσσα από την αρχή, να δείτε το αγγούρι.

Εντάξει, δεν ξέρω αν είναι αυτή η πρόθεσή σου, αλλά πλέον στο 70% τον threads που συμμετέχεις αυτό είναι το flow. Αυτό λέγεται trolling και είτε γίνεται ακούσια ή εκούσια έχει καταντήσει άκρως ενοχλητικό.

Επίσης κλείνοντας => Χ Ε Σ Τ Η Κ Α Μ Ε <= για την M2000. Όταν σου λένε όλοι ότι δεν θέλουν ν ασχοληθούν με μία γλώσσα που έχεις φτιάξει και είναι μία άσχημη hackia που δεν λες να σκοτώσεις γιατί έχει συναισθηματική αξία για εσένα… τι ακριβώς δεν καταλαβαίνεις; Σταμάτα να την αναφέρεις, common courtesy, αφού δεν κάνεις κάτι παράνομο by forum rules.

  • Like 8
Δημοσ.

There is a pattern here.

  • Ανοίγει κάποιο thread για το θέμα (Α)
  • Ο OP βρίσκει λύση στο πρόβλημα του
  • M2000 enters the scene. Hey OP ξέρεις ότι μπορείς να κάνεις και το (Β) ;
  • 2^X posts που εξηγούν στον M2000 ότι το (Β) που λέει δεν έχει σχέση με το (Α) ή στην γενική περίπτωση το (Β) είναι λάθος ή δεν υπάρχει. (Παλιά σ αυτό το σημείο ήταν gradual το escalation, πλέον όχι)
  • O M2000 προσπαθεί να τους βγάλει όλους τρελούς, συνήθως ζητώντας κώδικα σε κάτι τετριμμένο ή/και χαζό που πλέον δεν έχει να κάνει ούτε με το (Α) ούτε με το (Β), σ αυτό το σημείο το point της κουβέντας έχει χαθεί. Το δε namedropping, ασύστολο.
  • Τα επιχειρήματα τελειώνουν, ήρθε η ώρα για τα μεγάλα μέσα.
  • Κοιτάξτε, εγώ ιδέες δίνω και ακόμα μαθαίνω, δεν είμαστε όλοι φωστήρες σαν τον {EnterInsomniaUsernameWhoUsedLogic}. Επίσης δεν ξέρω τι λέτε εσείς αλλά εγώ στην M2000 το έχω κάνει (ή θα το κάνει μέσα σε 2 μέρες) και δουλεύει και έτσι είναι και αν δεν είναι εγώ έτσι το έχω ονομάσει, αντί ν ασχολείστε με θεωρίες και να κάνετε copy paste δοκιμάστε να γράψετε καμία γλώσσα από την αρχή, να δείτε το αγγούρι.
Εντάξει, δεν ξέρω αν είναι αυτή η πρόθεσή σου, αλλά πλέον στο 70% τον threads που συμμετέχεις αυτό είναι το flow. Αυτό λέγεται trolling και είτε γίνεται ακούσια ή εκούσια έχει καταντήσει άκρως ενοχλητικό.

 

Επίσης κλείνοντας => Χ Ε Σ Τ Η Κ Α Μ Ε <= για την M2000. Όταν σου λένε όλοι ότι δεν θέλουν ν ασχοληθούν με μία γλώσσα που έχεις φτιάξει και είναι μία άσχημη hackia που δεν λες να σκοτώσεις γιατί έχει συναισθηματική αξία για εσένα… τι ακριβώς δεν καταλαβαίνεις; Σταμάτα να την αναφέρεις, common courtesy, αφού δεν κάνεις κάτι παράνομο by forum rules.

 

Fixed. 10 was too low.

  • Like 2
Δημοσ.

Η m2000 πρακτικά δεν ειναι interpreted Visual Basic;

 

Yeap. Το runtime της VB6 χρησιμοποιεί. 20 χρόνια έχουν περάσει από τότε που βγήκε η τελευταία έκδοση και ο Μ2000 δεν λέει να συμβιβαστεί με την πραγματικότητα. Εικοσι. Χρόνια.

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...