2

I know web workers work as a separate thread than the UI thread but i dont understand why they are not allowed to modify the DOM. I mean that you can allow inter thread communication and keep the DOM data in a shared space and have the web workers thread modify the DOM. Why is this not allowed in browsers?

lovesh
  • 5,073
  • 7
  • 59
  • 90
  • 1
    It happens on almost every programming language that does GUI: only the main thread can call GUI functions (eg: Android, Delphi) – LatinSuD Dec 27 '12 at 08:10

1 Answers1

6

Because the DOM is not threadsafe, and JavaScript does not expose a thread API.


See also:

Community
  • 1
  • 1
Matt Ball
  • 344,413
  • 96
  • 627
  • 693
  • 1
    _"A piece of code is thread-safe if it can be safely invoked by multiple threads at the same time."_ http://en.wikipedia.org/wiki/Thread_safety – Matt Ball Aug 16 '11 at 17:25
  • can you tell me some references where i can read more about thread safety of DOM? thanks – lovesh Aug 16 '11 at 17:40
  • 1
    It's not thread safe, and was never intended to be, since ***JavaScript does not have any concept of a thread*** or other concurrent/parallel constructs. That's it. – Matt Ball Aug 16 '11 at 17:56