Thank you very much for time spent on this. I think it clearly shown you were right. I will take for granted that browser is queing function calls/event routines so such single piece of code should be (for now, in current firefox at least) atomic. Thanks again.
On 10 Lis, 15:30, Anthony Lieuallen <[email protected]> wrote: > On 11/10/09 06:03, Kodak wrote: > > > .. is browser queing all function calls/event routines? > > Yes. Try this: > > http://arantius.info/looper.html > > Open one window with one tab, with this page. Click 'start' and you'll > see that > > A) Your CPU (or one of its cores) pegs to 100% utilization. > B) The entire browser becomes very unresponsive. > > The browser is unresponsive because it's written in XUL+JS, and its JS > can't execute while JS in the page is executing -- there's only one > global thread. > > You should note that the time between "end" (of one loop) and "start" > (of the next) that it reports is very small, probably well under 10ms. > If you can, refresh the page so it isn't running anymore (or force kill > and restart the browser). Open a second window with this page. Click > start in one, see the very small delays. Click start in the other, and > you'll see the delay between loops jumps to at least 1 second, in my > case around 1.2 seconds. The JS in one window has to wait for the JS in > the other window to loop, before it gets to execute again. > > Or, to repeat myself, with proof this time: > > Javascript in Firefox is single threaded. Across all tabs, windows, > etc. You have to start an entire separate instance of Firefox (and that > must be on a separate profile because of how Firefox works) to get > another concurrent thread. > > P.S. Web worker threads [1] are an exception to this. You'll note the > restrictive API they get, however. That's how they work. JS is single > threaded in Firefox, basically because there's so much legacy JS that is > not single threaded. > > P.P.S. You might also note that Chrome does not exhibit this particular > behavior. Each of Chrome's tabs/windows execute in a separate OS-level > process, and do not block each other for execution. I'm not sure how it > handles the potential problem of cross-window access. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "greasemonkey-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/greasemonkey-users?hl=en -~----------~----~----~----~------~----~------~--~---
