我正在使用 DoppioJVM 进行调查用于将(图形)Java 应用程序移植到 Javascript。为此,最好了解它如何在 Javascript 环境中处理 Java 线程。具体来说:
- 线程可以共享内存吗?
- 线程可以在不同的 CPU 内核上运行吗?
- 与普通 JVM 相比,Doppio 中线程可能存在的任何其他限制/问题
最佳答案
浏览their paper on Doppio ,看起来 JVM 在主 Javascript 线程中运行。或者,根据这个github issue on running Doppio in a worker ,它在网络 worker 中运行良好。然而,Doppio 线程池似乎是一个模拟线程池,所有线程都位于同一个“真实”线程中,因此这些线程不会映射到 Web Worker。 the about page on Doppio似乎证实了这一点这表明
Since JavaScript is essentially single threaded, only one thread runs at a time
所以回答我自己的问题......
Can the threads share memory?
是的,因为它们都在主 Javascript 线程/单个工作线程中
Can the threads run on different CPU cores?
不,原因与上述相同
Any other limitations/issues threads might have in Doppio compared to a usual JVM
他们的论文中的一个主要问题(诚然不是多线程特定的)是速度降低了 24 倍到 42 倍
<小时/>感谢 Mike C 和 James Large 在评论中发布的评论和链接。
关于javascript - Doppio:多线程如何工作?有什么限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37124552/