|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
[javascript]multithread
Sto cercando di creare una classe Thread.
Codice:
function Thread(schedule,param){ this.schedule=schedule; this.id=null; this.param=param; var self=this; this.start=function(){ var tempFunc=function(){ self.schedule(self.param); clearInterval(self.id); } this.id=setInterval(tempFunc,0); } } function test(n,y){ var div=document.getElementById(n); for(var i=0;i<10000;i++){ div.innerHTML="Thread("+n+"):"+i; if(n==1&&i==350){ alert("Stop Thread("+n+")"); } if(n==2&&i==100){ alert("Stop Thread("+n+")"); } } alert("Thread("+n+") has finished"); } var thread1=new Thread(test,1); var thread2=new Thread(test,2); thread1.start(); thread2.start(); C'è modo di tirar fuori un vero multithreading? ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
siceramente credo che in un linguaggio di scripting come questo no, perchè comunque sia tu non dici all'interprete di creare prima un oggetto poi un altro e poi chiamarli, il problema è che il linguaggio non passa oltre fino alla conclusione della prima operazione.
non so se dice così, ma credo che lordine delle chiamate sia lineare, non parallelo
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
siceramente credo che in un linguaggio di scripting come questo no, perchè comunque sia tu non dici all'interprete di creare prima un oggetto poi un altro e poi chiamarli, il problema è che il linguaggio non passa oltre fino alla conclusione della prima operazione.
non so se dice così, ma credo che lordine delle chiamate sia lineare, non parallelo
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Si', esatto.
E' moltithread, ma non multitask. Non rilascera' il controllo per eventuali nuovi Thread fino al termine della funzione. Fai delle piccolissime e brevissime macchine a stati, che fanno quello che vorresti si facesse ad ogni passo del ciclo, e poi ritornano subito. Il tuo master esterno chiama entrambe le funzioni, e poi risetta il timer qualche centesimo di secondo dopo. (Non zero, cosi' il browser puo' fare anche altro, dovesse capitare).
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:01.