darkjoker Admin


Numero di messaggi: 813 Data d'iscrizione: 30.07.07
 | Oggetto: Variabili volatili Gio Dic 27, 2007 4:39 pm | |
| Studiandomi un po di C mi sono inbattuto nelle variabili volatili, ovvero delle variabili che possono essere, da come ho capito, modificate da altri processi... | Codice: | volatile int var = 12;
|
Ora, sapete dirmi come posso, con un programma in C, modificare una variabile volatile di un'altro programma...? grazie ciao  _________________ L'unico computer sicuro, è un computer spento. Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia  |
|
The_Nano93 membro


Numero di messaggi: 104 Età: 1004 Localizzazione: Da qualche parte nell'universo.... Data d'iscrizione: 28.09.07
 | Oggetto: Re: Variabili volatili Dom Dic 30, 2007 11:14 pm | |
| mmm.... non ne ho la più pallida idea!!! non sapevo neanche che esistessero. proverò a cercare in giro... |
|
The_Nano93 membro


Numero di messaggi: 104 Età: 1004 Localizzazione: Da qualche parte nell'universo.... Data d'iscrizione: 28.09.07
 | Oggetto: Re: Variabili volatili Dom Dic 30, 2007 11:29 pm | |
| non ho trovato niente. credo che usando un altro programma si possa modificare col semplice var=...;
devi chiedere a Blacklight |
|
darkjoker Admin


Numero di messaggi: 813 Data d'iscrizione: 30.07.07
 | Oggetto: Re: Variabili volatili Mer Gen 02, 2008 10:08 am | |
| blacclight se ne è andato... impara a leggere negli annunci  _________________ L'unico computer sicuro, è un computer spento. Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia  |
|
BlackLight Moderatore


Numero di messaggi: 277 Età: 25 Data d'iscrizione: 22.08.07
 | Oggetto: Re: Variabili volatili Mer Gen 02, 2008 4:15 pm | |
| | darkjoker ha scritto: | | blacclight se ne è andato... |
Tranquilli leggo ancora il forum di tanto in tanto e se le domande sono intelligenti non vedo perché di tanto in tanto non dovrei rispondere...
Da nessuna parte è scritto che una variabile volatile è modificabile da un altro programma. Due programmi sono due entità risedenti in memoria con due stack diversi che in nessuna maniera possono comunicare, quindi se ho una variabile volatile in Word e voglio leggerne il valore da Excel non posso farlo in nessun modo. È scritto casomai che con volatile si identifica una variabile che può essere modificata da un altro processo o thread diverso da quello che l'ha dichiarata, ma sempre all'interno dello stesso programma. Detto questo, la keyword volatile non aggiunge praticamente nulla di nuovo alla variabile: dà solo quest'informazione aggiuntiva al compilatore, ovvero che quella variabile può essere modificata anche da altri processi e thread all'interno dell'applicazione e quindi di prenderla 'con le pinze' e non ottimizzarla. Per intenderci, se io ho un codice del genere:
| Codice: | int var;
void foo() { var=0;
while (var>-10) printf ("Ciao\n"); } |
Ora se il compilatore fa ottimizzazione potrebbe notare che effettivamente var è sempre maggiore di -10 e far diventare quel codice
| Codice: | int var;
void foo() { var=0;
while (TRUE) printf ("Ciao\n"); } |
Ma questo potrebbe portare problemi se la variabile var è modificata anche da altri thread o processi, in quanto il suo valore potrebbe essere modificato senza che il processo di ottimizzazione fatto dal compilatore se ne accorga. Dichiarandola come volatile è come se gli dicessi 'guarda, questa roba qui la modifica anche qualcun altro, non farci su robe strane, non toccarla e non farci su dell'ottimizzazione'._________________ -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/CM/CC/E/IT/LS/M d-(--) s:- a-- C+++$ UBL++++$ P+++ L+++++$ E- W+++ N+ o? K? w-- !O !M>+ !V PS+++ PE-- Y++ PGP+ !t !5 !X R+ tv-- b++>+++ DI? D+ G>+++ e++>++++ h r++ y+++ ------END GEEK CODE BLOCK------ | Codice: | blacklight@nightmare:/$ touch figa touch: cannot touch `figa': Permission denied |
|
|
darkjoker Admin


Numero di messaggi: 813 Data d'iscrizione: 30.07.07
 | Oggetto: Re: Variabili volatili Mer Gen 02, 2008 4:30 pm | |
| grazie black; illuminante. _________________ L'unico computer sicuro, è un computer spento. Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia  |
|