On Jan 28, 2008, at 8:43 PM, Pietro Battiston wrote: > In sostanza: concesso che utilizzare tanti thread che fanno le stesse > cose sia sbagliato per motivi di comodità e/o di efficienza, ammettete > casi in cui invece sia bene utilizzare i thread per fare cose diverse?
In generale no. I thread (a memoria condivisa) sono praticamente *sempre* una complicazione a livello applicativo. Personalmente ammetto i thread come sensati solo per staccare un lavoratore che deve fare un calcolo pesante senza fermare l'UI di un programma. In questo caso sarebbe comunque possibile un processo nella maggior parte dei casi, tuttavia il thread può essere più comodo in presenza di strutture sostanzialmente asincrone *intraprocesso*. Ovvero a quel punto il thread, appena prima di terminare, notifica la cosa e il risultato a qualcuno che poi si prende la briga di passare l'informazione a chi di dovere (sempre in modo asincrono). In particolare per questa architettura ho in mente specialmente Cocoa. In altri casi potrebbe essere *comunque* fare fare la cosa ad un processo e usare altri meccanismi di comunicazione. Ma nota che a questo punto la faccenda è puramente tecnologica: il thread si sta comportando esattamente come un processo (perchè lo rendo completamente cieco a quello che non deve vedere e non gli permetto di toccare alcunchè). E' un thread poichè nella specifica piattaforma viene più comodo a livello implementativo, ma a livello logico/architetturale la struttura è la stessa che se avessi un processo. > Il fatto di usare gtk mi dà un modo (semplice) alternativo di dare > un'azione da eseguire dopo un tot di tempo, senza nel frattempo > paralizzare la GUI? Io non conosco GTK, ma nei vari toolkit grafici che ho incontrato ci sono dei timer che fanno in modo automatico quello che tu vuoi, senza bisogno di tirarsi fra le palle un thread solo per quello. Se poi l'azione è *intrinsecamente lenta a livello utente* (ovvero si misura in termini di *secondi*, che come tempo macchina sono una mezza eternità), puoi considerare architetture. Io facendo una banale ricerca su google ho trovato: http://personal.riverusers.com/~swilhelm/gtkperl-tutorial/timersandio.html (in Perl, ma dovrebbe essere sostanzialmente adattabile) E questa è quasi tutta roba asincrona, eh. _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python