Mas*_*ler 5 javascript concurrency html5 web-worker
我正在考虑将游戏移植到HTML5,但遇到一些问题。
游戏使用多线程,渲染运行在主线程上,脚本运行在工作线程上。多个脚本可以(并且经常)同时运行。任何脚本都可以访问大量的全局数据,主要是从中读取但偶尔也可以写入。有适当的机制可确保线程安全性不成问题。
看起来HTML 5 Web Workers可以用来设置多线程,但是要使全局数据正常工作将是一个大问题,因为似乎没有任何简单的方法可以在Worker之间共享数据。从理论上讲,我可以将所有全局数据放在一个共享工作器中,并让每个脚本工作器向其发送消息以获取和设置数据,但是访问足够普遍,因此消息传递开销将完全破坏性能,特别是因为简单的读取就远远不够了。比写入更昂贵,并且可能需要某种CPS实现才能使其正常工作。
有没有什么好办法可以将这样的架构移植到HTML5和JavaScript?
小智 0
我想知道你是否不能使用像 sqlite 这样的内存数据库(或者如果需要更多,完整的 postgres 数据库或其他东西),或者像 websockets 这样的东西来实现这样的东西。我没有在js中做过太多并发,所以我不确定它的缺点是什么。在这两者中,我更喜欢 websockets 的想法。我想到的另一个选择是使用某种消息队列,例如rabbitmq或kafka。