Newsgroup: it.comp.programmare.win32
Titolo: Classi utility!!

La domanda che mi chiedo è la seguente: se creo una classe utility (ovvero
con tutti i metodi static e pubblici e nessun attributo), possono due parti
diverse del mio codice richiamano una stessa funzione interna alla classe in
contemporanea?
    Max

 contemporanea?
Non lo so, ma dovrebbe essere lo stesso che chiamare in contemporanea
una funzione qualsiasi, che sia parte di una classe e non-static, sia
una funzione "sciolta".
Penso di sě, comunque.
Ciao
--
The Secret of Tabboz Island
http://it.geocities.com/tabbozisland

 wrote in message
news:9rmcat$49i$1...@pluto.news.dsi.unimi.it...

Scusa ma che vuol dire in contemporanea?
A meno che non parli di macchine multiprocessore, molto materialmente non e'
possibile che due parti diverse del tuo codice richiamino in contemporanea
la stessa funzione, visto che i processori eseguono una sola istruzione alla
volta (due quando proprio va di lusso, ma consecutive).
Con un discorso multithread, devi fare attenzione a eventuali variabili
globali o comunque con vita superiore alla dureta della funzione, che
potrebbero essere sporche.
Ciaotutti,
*

 ha scritto nel
messaggio news:9rmcat$49i$1...@pluto.news.dsi.unimi.it...

Intendi dire che vuoi chiamare la stessa istanza di una classe da due
programmi processi/thread distinti ?
In questo caso devi gestire al concorrenza con la mutua
esclusione...altrimenti un processo potrebbe essere interrotto mentre sta
modificando i dati della tua classe...a quel punto se l'altro processo
concorrente andasse a leggere/modificare i dati li troverebbe in uno stato
incoerente...
Se usi lo vuoi fare nello stesso processo non ci sono rpbolemi...un processo
è codice sequenziale...
Ciao
        Riccardo

 La domanda che mi chiedo è la seguente: se creo una classe utility (ovvero

Solo se i metodi sono thread-safe, cioe' se accedono a risorse
condivise compiendo operazioni adeguate.
Quando parli di due parti diverse del programma, parli di thread
distinti ?
-- 
Posted from  [80.105.34.80] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
9rmemm$usk5o$1...@ID-68324.news.dfncis.de...


 attendere che l'altro termini.
Allora devi gestire la mutua esclusione o comunque la sincronizzazione
mediante gli opportuni oggetti kernel.


 Non so se mi sono spiegato.
Mah, se č proprio assolutamente necessario che nessun thread aspetti, perchč
non fai 2 copie della funzione e metti un semaforo davanti a ciascuna? Cosě
se
una č bloccata da un altro thread si usa l'altra...

 capitare il "contemporaneo".
Esattamente come succede per le normali funzioni, ogni volta che chiami la
funzione membro di una classe vengono allocate sullo stack delle nuove
variabili locali; quindi ogni chiamata avra` il suo contesto distinto dagli
altri. Anzi, mi risulta che in un sistema SMP ogni processore disponga del
suo stack "privato", quindi la separazione fra le due chiamate e` ancora
maggiore.
Ovviamente la questione cambia se la funzione accede a variabili globali, o
a variabili membro della stessa istanza della classe, o in generale a
variabili condivise. Questo problema pero` e` "a monte" e riguarda il
multithreading in generale, lo hai allo stesso identico modo anche con un
sistema single processor. Qualsiasi programma che funziona su un single
processor dovrebbe funzionare senza problema anche su un SMP.
--
Bye! Lorenzo Lutti