Newsgroup: it.comp.lang.visual-basic
Titolo: Processi, assembly & Co

Salve a tutti, ho una conoscenza intermedia del VB.Net, ho iniziato ad usare i thread per un'applicazione che sto sviluppando e tutto funziona. Però a forza di leggere la documentazione su MSDN mi stanno sorgendo vari dubbi.
In definitiva vorrei capire con degli esempi pratici come sono tra loro correlati i seguenti concetti:
- Processo
- Dominio di applicazione
- Assembly
- Thread
 
Processo e thread sono concetti inerenti al sistema operativo e credo di averli compresi. Ma come si inseriscono in questo contesto i domini di applicazione e gli assembly? Potreste farmi degli esempi pratici?

Ciao antologiko,

in un'applicazione unmanaged il primo, ed unico, livello di isolamente 
è il processo, creato dal sistema operativo, all'interno di un singolo 
processo tutti possono fare tutto (thread compresi) come ad esempio 
accedere a tutta la memoria assegnata a quello specifico processo.
 
All'interno di un processo ci possono essere 1 o più thread, il primo 
thread (main) è creato implicitamente e nel caso di un'applicazione 
visuale è anche quello che gestisce i messaggi del sistema operativo.
 
Tu puoi creare n thread che possono liberamente interagire tra loro.
 
Il mondo managed introduce un pezzo in più nel mezzo, tra processo e 
thread, pezzo che si chiama "application domanin", un app domain viene 
creato automaticamente dal CLR quando parte il processo e all'interno 
dell'appdomain viene creato il main thread.
 
All'interno di un singolo processo ci possono essere più appdomain, che 
sono isolati tra loro, tant'è che una variabile static/shared ha valori 
diversi in appDomain diversi, quindi è shared a livello di appDomain 
non di processo.
 
AppDomain diversi possono comunicare? si, con le stesse tecniche con 
cui faresti comunicare processi diversi, cambia poco e nulla.
 
Perchè avere appDomain multipli? direi che il principale vantaggio è la 
CAS (code access security), ogni appDomain può avere una evidence 
appiccicata che determina quali sono i privilegi di quello specifico 
appDomain, potresti quindi fare sand boxing di porzioni di codice 
all'interno di un processo.
 
Un side effect comodo degli appDomain è che ti permetton di scaricare 
un assembly dalla memoria, una vlta caricato infatti un assembly non è 
scaricabile se non scaricando l'intero appDomain che lo ospita.
 
In tutto questo gli assembly hanno poca rilevanza, anche se non è 
proprio vero, considera che gli assembly sono le "dll" della tua 
applicazione, anche l'eseguibile è un assembly concettualmente.
 
.m
 
-- 
blog @ //
milestone.topics.it
 
 
 

Mauro Servienti [MVP] ci ha detto :
 
Ora non me ne volere ma visto che  sei nel teorico.....
un dubbio amletico mi ha sempre attanagliato: come traduci thread in 
italiano?
 
Per come l'intendiamo noi italiani un processo nel processo non rende 
l'idea ed anzi fa confusione(non crei un nuovo processo in realtà)! Me 
lo son sempre chiesto! I libri se la cavano sempre salomonicamente 
....lasciano thread e si arrangi chi legge a trovare nella sua mente un 
termine localizzato.....Forse non è possibile tradurlo!?!?!
 
Già handle = punto di ingresso, appiglio, riferimento mi sembra 
stiracchiato!
 
 
per dire ci sono definizioni online che non dicono siano 
contrastanti.....ma insomma!
http://www.tesionline.it/default/glossario.jsp?GlossarioID=1471
 
http://www.pc-facile.com/glossario/thread/
 
 
forse "sequenza funzionale" potrebbe avvicinarsi? Non mi risulta il 
thread sia una singola istruzione ma il blocco di codice che gestisce 
ad esempio la stampa o il salvataggio di un documento....o come dicevi 
la creazione di altre sequenze (main thread)!
 
Che ne dice un MVP ??????
 
-- 
----- Italliaaaaa 3227! -----
Sa cosa mi disse a Roma il cardinale Poletti? "Lei fa del bene, perchè 
con il suo personaggio la gente si rilassa e sorride, riconciliandosi 
un poco con la vita." ...Fra poco mi venderanno in farmacia.
(Lino Banfi)
 
 

 
 
Nel mio piccolo, vedi un processo come una scuderia di pony express.
Ogni pony express è un thread.
Un pony express può portare uno o più pacchi (quindi una o più istruzioni).
 
Per cui non vederlo come un blocco funzionale ma più come se mettessi ad 
una strada (il processo) una corsia in più.
 
Un esempio non molto tecnico ma è per intuirne la logica :) lascio al MVP 
maggiori dettagli.
 

 ha scritto:
ROTFL
THREAD = PONY EXPRESS mi mancava!
 
pssss....comunque sempre inglese è!
;)
 
-- 
----- Italliaaaaa 3227! -----
Come ti senti oggi???
 
Giano Geminus Bifrons Bepop Flowers
http://youtu.be/Wk_gyLo0i-c
 
minuto 3:14
 
(Un uomo un mito: Luciano Lupoletti)
 
 

OK sei stato molto chiaro, grazie! Mi premeva soprattutto capire se stessi trascurando qualcosa di importante nell'uso autodidatta del VB. Per ora direi che degli AppDomain posso farne a meno.

 che degli AppDomain posso farne a meno.
 
IMHO prima di affrontare sta roba....devi digerirne molta altra!
 
Per dire....i pc moderni sono tutti multicore...senza andare nell 
F#...con un po di attenzione 
vb.net
 supporta la programmazione 
multithreading e puoi spezzare la tua app in molti thread eseguiti di 
fatto in parallelo.
 
-- 
----- Italliaaaaa 3227! -----
Che Visnu benedica la mamma di Bipasha
mp4 
http://www.martek.it/vdt/Bipasha_Jodi_Breakers.mp4
 
W LA BIPASCIA!!!
 
 

 Che ne dice un MVP ??????
 
è così bello "thread" che ci frega di tradurlo :-)
