Newsgroup: it.comp.lang.visual-basic
Titolo: Perche VB non gestisce i thread? e che sono?

Ciao, sto agli inizi...Che sono i thread e perchè VB non li gestisce?
Grazie a tutti.........

> Ciao, sto agli inizi...Che sono i thread e perchè VB non li gestisce?
Ogni programma in esecuzione sotto Win32 si compone di uno o più
processi. All'interno di un processo possono essere eseguiti uno o
più threads ognuno dei quali svolge un'operazione in maniera più o
meno indipendente dagli altri threds.
Un programma multithreading sarebbe un processo che gestisce uno
o più threads (pezzi di codice) contemporaneamente.
Perché VB non li gestisce nativamente non si sa di preciso, ma sta il
fatto che fino a VB6 non sono previsti. VB.Net sarà in grado di creare
processi multithreads.
L'unico multithreading concesso in VB consiste negli ActiveX, processi
separati all'interno dello stesso spazio di memorizzazione. Ci sono vari
articoli interessanti riguardanti i threads all'interno di MSDN.
Altra ottima fonte è la Win32 Programmer's Reference.
Se utilizzi VB5 dai uno sguardo a questo codice, che tuttavia non c'è
verso di far funzionare in VB6 causa alcune limitazioni di protezione nella
Virtual Machine.
http://vbsimple.virtualave.net/howto/030.htm
Anche se non funziona correttamente nel file compilato di VB6 ti consiglio
di provarlo all'interno dell'IDE perché ti chiarirà le idee.
--
Fibia "Sakamoto" FBI
E-mail: 
fibi...@hotmail.com
ICQ UIN 63586057
Sito Personale: 
http://www.geocities.com/fibiafbi
VB Simple: 
http://vbsimple.virtualave.net
Membro #26 delle Mitiche Brigate Takahashi sezione Sud

il fatto che fino a VB6 non sono previsti.
Credo sia per il fatto che la runtime non sia thread-safe in certi 
punti, ma dovrei fare dei test, e comunque VB 6 non ce l'ho
Delphi risolve brillantemente mettendo tutto il codice della VCL in un 
unico thread, e gli oggetti TThread che vogliono comunicare con la VCL 
(cambiare una proprietà di un controllo su un form, ad esempio), 
chiamano il metodo Synchronize, che comunica al thread principale della 
VCL di chiamare una callback definita dal TThread, che viene eseguita 
nel contesto del thread principale e quindi nessun problema di thread 
safety

 di provarlo all'interno dell'IDE perché ti chiarirà le idee.
Ciao, ho visto il codice...Belli i     quadratini. Ho stampato l'articolo e
letto....ho capito qualcosa...sono andato di fretta.
In sostanza la funzione CreateThread viene richiata dal codice di
AvviaThread (ma come?) e quando la finestra modale appare continua ad essere
eseguita, mentre normalmente con una finestra modale si blocca
momentaneamente l'esecuzione del codice VB; giusto?
In definitiva il supporto dei thread permette al linguaggio di creare
funzioni in un certo modo indipendenti dagli eventi che l'utente può aver
generato, anche se è l'utente a generare l'evento iniziale ( sempre? ): in
questo caso i quadratini che continuanoa cambiare colore.
Ho capito la questione?
Cmq grazie per l'esempio.

 Ho capito la questione?
l'avere n threads in un processo permette di eseguire n-1 funzioni con-
temporaneamente senza che il tempo di esecuzione interferisca (se non
collateralmente ovvero sotto forma di rallentamento) sull'esecuzione del
thread principale.
Ecco quindi la possibilità di lanciare una msgbox non bloccante o per
essere più precisi, una messagebox bloccante un altro thread e non
quello principale (il form).
come insegnava il buon Bepi DBG, in un linguaggio sporco come VB
gestire threads è un'impresa disperata non perché non possano essere
creati ma perché non ci sono abbastanza istruzioni per maneggiarli senza
scorticarsi la mente e senza dover ammirare le bellissime schermate
azzurre del nostro compagno di formattazioni.
Personalmente ho trovato la Win32 P.R. molto chiara e semplice nella
spiegazione di threads e processi e non posso far altro che consigliartela.
Ciao
(*) il verbo "To Resume" in italiano qual'è? riesumare? :P
--
Fibia "BrokenHeart" FBI


(*) il verbo "To Resume" in italiano qual'č? riesumare? :P
LOL :-)