Autore Topic: Multithreading  (Letto 1254 volte)

Offline Ippo343

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
    • http://---------
Multithreading
« il: 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

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Multithreading
« Risposta #1 il: 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.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Ippo343

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
    • http://---------
Re: Multithreading
« Risposta #2 il: 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.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Multithreading
« Risposta #3 il: 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.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Multithreading
« Risposta #4 il: 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.

Offline Ippo343

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
    • http://---------
Re: Multithreading
« Risposta #5 il: 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

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Multithreading
« Risposta #6 il: 12 Ottobre 2008, 11:51:24 »
Non sò se lanciando il processo in background (con "&"), come si comporta Gambas...
Dovresti provare...