线程
在计算机科学中,线程是指同时执行多个任务或程序。每个能够执行代码的单元称为**线程**。
**主线程**是浏览器用来处理用户事件、渲染和绘制显示以及运行构成典型网页或应用程序的大部分代码的线程。由于所有这些都在一个线程中发生,因此缓慢的网站或应用程序脚本会减慢整个浏览器的速度;更糟糕的是,如果网站或应用程序脚本进入无限循环,则整个浏览器将挂起。这会导致令人沮丧的、迟缓的(或更糟)用户体验。
现代 JavaScript 提供了创建其他线程的方法,每个线程独立执行,同时可能相互通信。这使用诸如 Web Workers 之类的技术完成,可以使用它们来分离一个子程序,该子程序与其自己的线程中的主线程同时运行。这允许缓慢、复杂或长时间运行的任务独立于主线程执行,从而保持网站或应用程序的整体性能以及浏览器的整体性能。线程还允许 Web 应用程序利用现代多核处理器:实现比在单核上运行的多线程应用程序更好的性能。
一种称为**服务工作者**的特殊类型的 worker 可以被创建,并且可以在用户允许的情况下,即使用户当前没有使用该网站,也可以留下来运行。这用于创建能够在用户没有积极参与网站时发生事情时通知用户的网站。例如,通知用户他们收到了新电子邮件,即使他们当前没有登录到他们的邮件服务。
总的来说,可以观察到这些线程在我们的操作系统中非常有用。它们有助于最大程度地减少上下文切换时间,使通信更加有效,并允许进一步利用多处理器体系结构。