2008/9/2 Paolo Ferraris <pieffe8@xxxxxxxxx> > > Una chiamata "sincrona" (se fosse permessa) ad un server in Javascript > corrisponde ad una semplice chiamata a funzione, dove il script Javascript > rimane bloccato fino a quando non arriva la risposta da parte del server. > Con le implementazioni attuali degli engine Javascript, che sono monothread, > questo significa tenere bloccati tutti i script javascript se non l'intero > browser. Firefox 3 ha introdotto degli oggetti appositi per creare e gestire i thread: http://developer.mozilla.org/en/The_Thread_Manager Ovviamente non è l'engine Javascript che fa il lavoro, ma il browser che lo contiene. Questo vale anche per Chrome da quello che ho capito. Il motore JavaScript è sicuramente "threadizzato" (basti pensare al garbage collector), ma il linguaggio non ha funzioni native per la gestione dei thread. Ma credo che per chrome il discorso sia un altro. Da quel che credo di aver capito, ma la documentazione è scarsa, Chrome tratta ogni "tab" di navigazione come un processo separato (non come un thread, ma come un processo). Quindi non credo sia esatto dire che ogni script viene eseguito in un suo thread, ma piuttosto che ogni tab di navigazione ha il suo processo separato, ciascuno eseguente i suoi eventuali script in maniera sequenziale. Tant'è vero che: - è possibile avere un task manager simile a quello di Windows - se una tab viene trascinata fuori dalla finestra del browser, diventa essa stessa una finestra indipendente. In questo modo non succede come in Firefox dove, per fare un esempio, quando carico un PDF in una tab, le altre sono bloccate fino a che il reader non è pronto in memoria. In Firefox le tab sono thread di esecuzione del browser, mentre in Chrome sono processi indipendenti, quindi eventuali pocci nella memoria di uno non influiscono sull'esecuzione degli altri (a meno che gli altri non contengano pagine web collegate). Per quanto riguarda il discorso di Enrico sulla sincronia/asincronia del web... beh, secondo me ha ragione lui, nel senso che le chiamate web, JAvaScript o non JavaScript, Ajax o non Ajax, avvengono comunque tramite il protocollo HTTP, che rimane tutt'oggi un protocollo concepito per la richiesta e il download di file di testo. Dulcis in fundo: qualcuno ha aperto la finestra di configurazione di Chrome? Spassosa! Ciao Paolo