Codice rientrante: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
RedBot (discussione | contributi)
m r2.5.2) (Bot: Modifico: en:Reentrancy (computing)
ValterVBot (discussione | contributi)
m Esempi: tag source deprecati, replaced: <source lang= → <syntaxhighlight lang= (2), </source> → </syntaxhighlight> (2)
 
(7 versioni intermedie di 7 utenti non mostrate)
Riga 1:
In [[informatica]], il codice di un [[Programma (informatica)|programma]] o di una [[subroutine|routine]] è detto '''rientrante''' se è progettato in modo che una singola copia del codice in memoria possa essere condivisa ed eseguita contemporaneamente e senza risultati inaspettati da utenti multipli o [[processo (informatica)|processi]] separati. La programmazione rientrante è vitale per molti sistemi [[multitasking]] (vedi [[thread-safe]]).
 
Affinché una routine o comunque una parte di codice sia rientrante deve soddisfare questi requisiti:
Riga 18:
Nel frammento di codice che segue, entrambe le funzioni <code>f()</code> e <code>g()</code> '''non''' sono rientranti.
 
<sourcesyntaxhighlight lang=c>
int g_var = 1;
 
int f(){
{
g_var = g_var + 2;
return g_var;
}
 
int g(){
{
return f () + 2;
}
</syntaxhighlight>
</source>
 
La funzione <code>f()</code> dipende dalla [[variabile globale]] <code>g_var</code>; perciò, se due processi eseguono la funzione ed accedono a <code>g_var</code> simultaneamente, il risultato dipende dalle tempistiche di esecuzione. Perciò, <code>f()</code> non è rientrante. Neppure <code>g()</code> è rientrante, perché richiama <code>f()</code> che non è rientrante.
Riga 37 ⟶ 35:
Queste sono invece funzioni rientranti:
 
<sourcesyntaxhighlight lang=c>
int f(int i){
{
return i + 2;
}
 
int g(int i){
{
return f(i) + 2;
}
</syntaxhighlight>
</source>
 
== Collegamenti esterni ==
Riga 53 ⟶ 49:
 
{{Portale|Informatica}}
[[Categoria:Teorie della programmazione]]
 
[[Categoria:Programmazione concorrente]]
[[bs:Reentrant]]
[[de:Eintrittsinvarianz]]
[[en:Reentrancy (computing)]]
[[fr:Réentrance]]
[[ja:リエントラント]]
[[ko:재진입성]]
[[pl:Wielobieżność]]
[[pt:Reentrância]]
[[ru:Реентерабельность]]
[[sh:Reentrant]]
[[uk:Повторновикористовна підпрограма]]
[[zh:可重入]]