开发者现可以在Chrome 70测试WebAssembly执行绪功能!

Chrome 70默默的开始测试多执行绪功能,Google已经在V8引擎中的WebAssembly引擎,加入支持执行绪必要的实作。想尝鲜的使用者可以在浏览器中的URL列输入chrome://flags,找到WebAssembly Threads Support的选项启用。

开发者现可以在Chrome 70测试WebAssembly执行绪功能!

Mozilla之前发表了WebAssembly的发展情况,提到执行绪提案的支持已经几乎完成,但因为今年早些时候的Spectre漏洞,让Firefox关闭了支持执行绪关键部分SharedArrayBuffers,但这只是暂时的应对措施,当问题解决了,WebAssembly就能开始在Firefox中正式支持多执行绪。而Chrome 70版本则已经可以让开发者开始测试WebAssembly执行绪功能了。

WebAssembly支持用C++和其他程序语言编写的代码在网页上执行,但相对于本机应用程式,缺少了强力的执行绪功能,而执行绪是支持平行运算的原语(Primitive),因此虽然大多数C和C++开发人员都熟悉执行绪管理标准API pthreads,但是只要放到浏览器上,却是无用武之地,在经过社群积极努力的实现执行绪功能后,终于让网页可以执行真正的多执行绪应用程式。

开发者现可以在Chrome 70测试WebAssembly执行绪功能!

从2012年开始,Chrome 4也以Web Workers支持平行运算,但是Web Workers并不会互相分享可变资料,而是依赖讯息传递进行传递,事实上,Chrome为每一个Web Workers都分配了一个新的V8引擎称为Isolates,Isolates既不共享编译代码也不共享JavaScript物件,因此也无法共享如pthreads的可变资料。

不过,现在到来的WebAssembly执行绪,可以共享相同WebAssembly內存,而共享內存的底层,则是透过SharedArrayBuffer完成的,SharedArrayBuffer是一个JavaScript原语,允许Workers之间共享单个ArrayBuffer的属性,每一个WebAssembly都在一个Web Worker中运作,由于他们分享WebAssembly內存,因此能像在本机平台一样运作。

开发者现可以在Chrome 70测试WebAssembly执行绪功能!

而这代表使用WebAssembly执行绪的应用程式,负责管理存取共享內存,就像是传统多执行绪应用程式一样,有许多用C或C++撰写的现有代码都使用pthreads,这些代码现在已经可以编译成WebAssembly,并以真正的执行绪模式执行,允许更多核心同时处理相同的资料。

为此Google在V8引擎中已经为WebAssembly引擎的执行绪实作了必要的支持,想尝鲜的使用者有两个方法可以进行测试,其一是在浏览器中的URL列输入chrome://flags,找到WebAssembly Threads Support的选项启用,接着重新启动浏览器便能开始测试。

其二,开发者可以透过Origin Trial先行尝试新的网页功能,并让使用者一起参与测试,而这也能供Chrome开发团队收集到测试人员的回馈,从而改进新功能。


分享到:


相關文章: