如何解决通过工作程序终止实现JS WebWorkers工作队列
我正在尝试使用Web Workers实现作业队列。任务是图像解码。任务将快速到达并花费少量可变的时间。
我写了一个简单的队列,产生了4个工人并处理了工作正常的队列。但是在iPad上,我的代码过了一会儿使页面崩溃。
经过大量调查,我发现由于某些原因,iPad浏览器无法正确/有效地保护GC工作者的内存,并且大量工作最终导致崩溃。 (另一种解释可能是线程中的代码(jpeg解码)会泄漏内存,尽管我无法在事件探查器中找到它,并且页面也不会在其他台式机/设备上崩溃。)
我发现的是,如果我在完成工作后终止每个工人并生成新的工人,则在iPad上一切正常。因此,我现在尝试创建一个作业队列,为每个作业生成一个新的工人。
我面临的问题是创建工作人员的成本相对较高(约40毫秒),最终将与主线程上即将到来的工作流竞争。我的问题是解决此问题的最佳方法是什么,以及是否有相关的现有解决方案库?我应该将队列管理器移到它自己的Webworker吗?还是从maxWorkers * 2开始,每当一个工作人员结束时,它都会产生自己的替换工作人员,并将其与结果一起发送给queque管理器?
任何想法表示感谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。