|
|||||||
|
|
|
![]() |
|
|
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: 16:09.



















