【发布时间】:2016-01-24 12:54:40
【问题描述】:
我有一种情况,工作线程解析一些数据并使用postMessage 将解析结果发送到主线程。然后工作线程继续解析更多数据。所以我们可以说,工作线程就像一个循环,在每个循环之后,它都会向主线程发送一些数据。
在主线程中,我在全局数组中进行了一些查找,以检查接收到的数据是否已经存在。如果没有,那么我将数据插入到数组中。当我这样做时,工作线程继续解析数据并将其发送到主线程。
查找可能非常昂贵且耗时。
现在我的问题是,它在每个浏览器中都会崩溃。但是,如果我从主线程中删除查找并将数据插入到全局数组中,它工作正常。所以我假设崩溃正在发生,因为当从工作人员调用第二个postMessage 时主线程保持忙碌。
我的问题有两个 -
1) 我的分析正确吗?我的意思是,如果从工作线程调用postMessage 时主线程正忙,是否可能崩溃?
2) 有没有办法克服这种情况?
【问题讨论】:
标签: javascript multithreading web-worker