One of the coolest new possibilities arriving along with HTML5 was the
Worker interface of the Web Workers API. Beforehand, we had to introduce some tricks to still present a responsive website to the user. The
Worker interface allows us to create functions that feature long runtime and require high-computational effort. Furthermore,
Worker instances may be used simultaneously giving us the possibility to spawn as many of these workers as we desire.
This is a valid question. Historically, the ability to spawn threads provided an elegant way to partition the work within a process. The operating system is responsible for scheduling the time given for each thread, such that threads with higher priority and more work are preferred to low-priority idle threads.
Over the last few years, simultaneous multi-threading (SMT) has become essential to access the computing abilities of modern CPUs. The reason is simple: Moore’s law is still valid regarding the number of transistors per area. However, frequency scaling had to stop for a number of reasons. Therefore, the available transistors had to be used otherwise. It was decided that architectural improvements (SIMD, for example) and multi-cores represent the optimum choice.