Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Ippo343 - 11 Ottobre 2008, 17:04:35

Titolo: Multithreading
Inserito da: Ippo343 - 11 Ottobre 2008, 17:04:35
Salve a tutti! Sono un nuovo utente Gambas, e mi stavo chiedendo se sia possibile scrivere applicazioni in multithreading usando gambas, e se si, come?

Grazie
Titolo: Re: Multithreading
Inserito da: leo72 - 11 Ottobre 2008, 17:28:41
No, Benoit non ha implementato tale caratteristica. Da quel che ha scritto sulla mailing-list tempo fa su quest'argomento, non credo neanche che sia intenzionato a farlo:
Citazione
Gambas interpreter was not designed to be multi-threaded at all.
What sort of background process people want to do during their application? I  never had such a need.
Titolo: Re: Multithreading
Inserito da: Ippo343 - 11 Ottobre 2008, 17:50:02
Mmm ciò è male ^^

Sto scrivendo un'applicazione che dovrà spostare grandissime quantità di dati (decine di gigabyte) e quindi il multithreading risolverebbe parecchio. Vabbè niente... grazie lo stesso.
Titolo: Re: Multithreading
Inserito da: leo72 - 11 Ottobre 2008, 17:59:40
Che esigenze hai?
Non vuoi bloccare il form oppure devi poter eseguire qualcos'altro durante quel processo?
Nel primo caso puoi utilizzare il comando WAIT che serve proprio a rendere temporaneamente il controllo all'interprete Gambas, in modo da poter controllare l'input dell'utente (mouse, tastiera) e ad aggiornare la GUI.
Titolo: Re: Multithreading
Inserito da: md9327 - 11 Ottobre 2008, 18:44:47
Lo puoi implementare eseguendo in parallelo più processi dello stesso tipo, magari eseguendo lo stesso eseguibile (anche Gambas) più volte.

I risultati potresti leggerli dai log che verranno prodotti da questi eseguibile, che dovranno avere per forza nomi diversi; il come identificarli sarà da studiare, magari implementando un archivio di processi da cui partite per leggere le informazioni che interessano (una specie di archivio dinamico).
Un timer potrebbe anche essere inserito nel discorso della lettura, per non bloccare la parte utente....

Dopotutto, credo che sistemi per simulare il multithread si possono inventare anche con Gambas, certo non è una cosa immediata.
Titolo: Re: Multithreading
Inserito da: Ippo343 - 11 Ottobre 2008, 23:24:39
E' un programma di backup, e quindi è una semplice copia di file (e qualche hash per verificare se è lo stesso file ma non importano nel complesso). Interessante quel comando WAIT, non sapevo della sua esistenza. Adesso mi informo. Mi pareva di aver letto che in visual basic esistono i metodi asynchronous, che da quanto ho capito si comportano un po' come un altro thread... Ci sono anche in Gambas?

Grazie delle risposte
Titolo: Re: Multithreading
Inserito da: md9327 - 12 Ottobre 2008, 11:51:24
Non sò se lanciando il processo in background (con "&"), come si comporta Gambas...
Dovresti provare...