一个接一个地执行异步进程

时间:2013-08-09 04:51:20

标签: javascript

我有一个包含5000个元素的数组,我正在以下面的方式执行它

var arr = [..] // 5000 elements array
split = 10;
arr.split(split);
function asyncForLoop(){
   // It takes advantage of Web workers and execute for loop
}
var pending = new Array(split), data = [];
for(var i = 0, l = 4; i++){
   (function(a){
       data[i] = new asyncForLoop(a, function(){

       });
   })(arr[i]);
   pending.shift();
}

这是我执行for循环的方式。  我正在将一个数组分成10个切片  2.创建4个异步进程以执行前四个for循环切片。 这是我的问题  3.我想实现一种机制,其中4个异步进程将在前四个数组切片上运行,无论谁在比赛中首先完成将选择第5项,接下来将选择第6项。这意味着选择待处理的项目。

在这里,我面临的挑战是,如果两个进程同时完成,两个进程都会执行相同的待处理项目,因为当时状态将处于待处理状态。

你能不能给我一个实现这个的想法。?

1 个答案:

答案 0 :(得分:1)

使用信号量保护待处理列表。任何时候只有一个进程可以拥有信号量,因此持有信号量的进程可以安全地触及挂起的列表。