要多线程还是不要多线程- JavaScript
To multithread or not to multithread - JavaScript
本文关键字:多线程 JavaScript 更新时间:2023-09-26
我目前正在尝试一款类似于《太空入侵者》的JavaScript射击游戏。现在的编码方式,要么是移动的发射体,要么是飞船。任何玩过原版的人都知道这并不好。我记得在我的Java类中讨论多线程,我想知道这是正确的方法还是有另一种方法?例如:
Thread Move start;
Thread Move run;
Thread Shoot start;
Thread Move run;
Thread Shoot run;
Thread Shoot end;
Thread Move run;
Thread Move end;
你可以在Javascript中使用WebWorkers,但它们的行为与java中真正的多线程环境完全不同。你必须采用一种不同的游戏开发方法,使用一种循环技术来更新你的游戏逻辑。在javascript中添加线程的支持仍然是非常狡猾的,在我看来几乎是一个噱头,唯一的一个是Chrome,因为你不一定复制传递给线程的所有数据。这就是为什么javascript中的线程被破坏了:
- 没有对dom的真正访问
- 如果不是全部(取决于引擎)数据必须复制到其他线程,这意味着如果你想在后台处理大量数据,你必须首先对该数据执行副本
- WebWorkers上的错误并不总是完全明显的(有时你会得到随机的,难以理解的错误)
因此,WebWorkers具有巨大的潜力,但对我来说,它们的使用受到目前对它们施加的限制的严重限制。也许你可以在游戏中巧妙地使用它们。
传统上,JavaScript是单线程的,所以像在Java中那样使用线程是不可行的。JavaScript中一个相对较新的特性是web workers,它提供了真正的多线程功能。然而,浏览器之间的支持是可变的,工作线程可以做的事情受到限制,线程之间的通信是痛苦的。
你也可以使用一些类似的东西来模拟异步执行。
无论你做什么,重要的是不要阻塞主线程。整个浏览器窗口变得无响应
相关文章:
- javascript中的多线程
- Javascript支持多线程吗
- 为什么Javascript SetTimeout()不是多线程的
- 从多线程C++插件回调NodeJS Javascript函数
- 如何使用并行/多线程Hamsters.js Javascript库编辑数组中的对象属性
- 是否可以使用多线程执行Javascript函数
- 使用不同选项卡的Javascript中的多线程
- JavaScript 回调 - 多线程
- 有时,JavaScript是多线程的
- Javascript 多线程两个窗口焦点
- JavaScript 中的多线程
- 既然JavaScript是单线程的,那么HTML5中的web工作者是如何进行多线程的呢
- Delphi-can't在多线程应用程序中使用IWebBrowser2来抑制JavaScript错误对话框
- JavaScript:如何防止setIntegal触发多线程
- Javascript引擎(或其他可嵌入语言),用于类似mongodb的查询执行环境和多线程
- Javascript -定期向服务器发送用户位置数据(多线程)
- Alfresco JavaScript/Rhino多线程处理和并发
- ActiveX多线程调用javascript回调例程出现问题
- 要多线程还是不要多线程- JavaScript
- 我们真的需要多线程JavaScript吗?