PWA系列 - Web Workers 线程模型

前言

本文是Chromium官方设计文档Blink Workers主旨内容的翻译,介绍ServiceWorker在内核层面的一些基本概念和线程模型。

一 Worker类型

Web Workers是一个Web平台特性,它提供了后台JS context,和允许任何脚本运行在后台,通常运行在一个独立的线程。Blink实现了几类worker:

dedicated worker: 专用worker, 只能被创建它的JS访问。创建它的页面关闭, 它的生命周期就结束了。 一个文档可以有多个dedicated worker。

shared worker:共享worker, 可以被同一域名下的JS访问。关联的页面都关闭时, 它的生命周期就结束了。多个文档可以对应同一个shared worker。

service worker:事件驱动的worker, 生命周期与页面无关。关联页面未关闭时, 它也可以退出, 没有关联页面时, 它也可以启动。

compositor worker:允许JS脚本处理UI的工作,比如,响应输入和更新视觉效果。它运行在非UI线程。

二 基本概念

Worker context:worker脚本运行的后台JS上下文。

Worker thread:worker context运行的线程,它通常是指blink中的WorkerThread类,对应一个底层平台线程(blink中的WebThread)。

Worker object: 通常是指JS的worker对象,关联文档可以通过它与worker交互。它一般在它的parent context进行初始化,它通常运行在parent context的线程中,一般是主线程。

Worker global scope:worker JS上下文的global scope(比如, window 是文档JS的global scope)。注意,window scope中APIs与worker global scope的APIs并不是一一对应。http://click.aliyun.com/m/1000005498/

你可能感兴趣的:(PWA系列 - Web Workers 线程模型)