Subj : Re: Threading in JavaScript To : comp.lang.javascript,netscape.public.mozilla.jseng From : Steve van Dongen Date : Sun Feb 02 2003 10:04 pm On Sun, 02 Feb 2003 13:43:03 +0000, Gordan wrote: >Steve van Dongen wrote: > >> On Sat, 01 Feb 2003 17:40:17 +0000, Gordan >> wrote: > >[snip] > >>>I was thinking about working around this by using IFRAMEs instead of DIVs, >>>but I have found that the single-thread paradigm also spans frames within >>>a single browser instance. >>> >>>The only workaround I can think of is creating a Java applet or a >>>plugin/ActiveX control combo (I need the app to be cross-browser) that can >>>take a URL, or a list of URLs and start downloading them independently. >>>Then I could fudge the delay loop using a recursive setTimeout() based >>>function for polling the status, and working around the problem that way. >>>It wouldn't work around the parallel page generation issues, but it would >>>at least work around the issue of not being able to fork multiple >>>simultaneous downloads. > >[snip] > >> Sounds like you should look into XMLHTTP >> http://jibbering.com/2002/4/httprequest.html > >Thank for the reply, Steve. > >I am already aware of the XMLHTTP method for downloading things. >Unfortunately, it only allows the download of one file at a time, which is >why I was looking for a different solution that allows me to download >multiple files simultaneously. If you use asyncronous mode you can download as many files as you want. True, on a strictly technical level, the callbacks will be processed syncronously because javascript is single threaded, but there's nothing you can do about that and you'll have that problem with any solution that involves javascript. http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xml_mth_or_4to4.asp The other thing to consider is that the HTTP 1.0 and 1.1 specifications allows for four and two socket connections respectively per server, per process. You can spawn 100 threads and make 100 requests if you want; however, all but 4/2 will be blocked unless they are made in different processes. There is a registry key that you can set to increase the client-side limit but, if I remember right, neither cannot be set higher than 16. http://support.microsoft.com/default.aspx?scid=kb;en-us;183110 I use XMLHTTP along with setTimeout and setInterval in my pages -- I make 10-15 requests every 5 seconds or so -- and it works really nicely. I'm on an intranet with a responsive server though so the HTTP limit doesn't really affect me. If you're developing for an internet site you might have some trouble because of the higher latency. Regards, Steve .