Hvad betyder reetrant kode?

Fundet med Google-søgning:
http://www.avocetsystems.com/company/articles/magazine/areentra.htmEn rutine skal opfylde følgende betingelser for at være reentrant:
Det aldrig ændrer sig selv.
Det vil sige, at vejledningen af programmet er aldrig ændret.
Periode.
Under nogen omstændigheder.
Alt for mange indlejrede systemer stadig overtræder denne Cardinal reglen.
Alle variabler ændres af rutine skal være afsat til en bestemt "instans" af funktionen's aktivering.
Så hvis reentrant funktion FOO kaldes af tre forskellige funktioner, så FOO's data skal lagres i tre forskellige områder af RAM.ANSI C Standard siger:Funktionerne i standard-bibliotek er ikke garanteret at være reentrant og kan ændre objekter med statisk opbevaring varighed.
Således er et signal handling kan ikke i almindelighed kalder standard bibliotekets funktioner.
 
Kort betyder det, en procedure, som kan afbrydes, og igen kaldes fra afbrydelsen handling og dette kan nested.
Varuzhan

 
Reentrant kode gør udstrakt brug af semaforer.Når kontrol indtaster en kode, hvor nogle globale variable er modificeret, kode bør først tage Semaforens før redigering og efter det
er gjort skal genoprette den variable til en passende værdi, og derefter slippe den Semaforens.

Basicallt reentrant kode bør forsøge at bruge lokale variabler så meget som det kan.

 
I enkle det betyder,
En funktion er reentrant hvis, mens den er ved at blive henrettet, kan det være re-påberåbes af sig selv, eller ved enhver anden rutine, ved at afbryde den nuværende udførelse i et stykke tid.

Der er kun få thumbrules hvor du kan finde ud af gennem Google

Skål
idlebrain

 
Kære alle,
Jeg forsøger RTOS for 8051, men jeg har problem med udtrykket Reentrant Funktioner i RTX51 Tommelise.I don t forstå denne valgperiode, så kunne nogen hjælp og fortælle mig forskellen mellem Reentrant Functions og andre funktioner c.
Her er inden for rammerne af Reentrant Functions støtte fra Keil.

"De C51 Compiler yder støtte til reentrant funktioner. Reentrant funktioner butik parametre og lokale variabler på et reentrant stakken. Dette beskytter dem fra rekursiv eller samtidige opkald. RTX51 Tiny ikke indeholder nogen forvaltning for C51 reentrant stakken. Så hvis du bruger reentrant funktioner i din ansøgning, skal du sikre, at disse funktioner ikke kræver nogen RTX51 Tiny systemet fungerer, og at reentrant funktioner ikke afbrydes af runde-robin opgave centraludstyr.
C funktioner, som kun har brug registre for parameter og automatisk variabler, er i sig selv reentrant og han kan benævnes uden begrænsninger fra RTX51 Tommelise.
Ikke-reentrant C funktioner kan ikke kaldes fra mere end en opgave eller afbryde proceduren.Ikke-reentrant C51 funktioner gemme deres parametre og automatisk variabler (lokale data) i statisk hukommelse segmenter som kan overskrives, når funktionen er kaldet fra flere opgaver samtidigt eller rekursivt.
Du kan anvende ikke-reentrant funktioner fra flere opgaver, hvis du sikre, at de ikke kaldes rekursivt (samtidig).Normalt betyder dette, at runde-robin opgave fartplansæsonen skal være deaktiveret, og at din ikke-reentrant funktioner ikke kan kalde enhver RTX51 Tiny system funktioner.
Note
Du bør deaktivere Round-Robin Task Switching, hvis du ønsker at påberåbe reentrant eller ikke-reentrant funktion fra mere end en opgave eller afbryde.
"
Tak for din hjælp,
Venlig hilsen,

 
Reentrant kode er kode, der kan kaldes ved et hvilket som helst antal tråde, selv samme tråd.Dybest set hver gang en tråd kalder den rutinemæssige det får en pointer til sit eget sæt af data (undtagen statiske data vil jeg antage).Du kan forestille sig de problemer, der ville opstå, hvis flere tråde kaldet den samme rutine, og alle af dem handlede om det samme sæt af data.Alternativet er data låsning der er ikke meget for et alternativ.

 
Hej alle,
Mit spørgsmål er, hvordan man skriver en reentrant funktion og?selvfølgelig
er det adskiller sig fra normale funktioner, men hvordan?
en typisk funktion:
void hello (indhold)
(
int x;
x = 835;
.........
printf (x);
printf ( "Hej alle sammen!");
)
og reentrant funktion ville være:
????
????
????
Tak for dit svar
venlig hilsen,

 
Henviser til s / w (en funktion), der kan udføres flere gange
samtidigt.
En reentrant funktion kan sikkert opfordret fra flere opgaver.

 
haha,
god for ingenting

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top