0

我有一个成员 ID 列表,我需要对其进行循环并对每个 ID 进行一些处理。

我目前遍历每个 ID,并对每个 ID 在 cfthread 中的每个 ID 进行一些处理。我遇到的问题是它创建了太多线程,所以我想我可以在每个线程中处理大约 5 个项目。但我正在努力解决这个问题。

我正在寻找类似于 RoR 的 in_groups_of 方法的东西。因此,我想将列表(例如 100 个列表项)分解为 20 个较小的列表,每个列表中有 5 个,将每个较小的列表传递给 cfthread,而不是一次一个项目。

我确信这很容易做到,但我就是不知道该怎么做。

谢谢

4

2 回答 2

2

将列表转换为数组怎么样:

显然这是非常简单的框架,但它可以提供一个开始:

<cfscript>
    myArr = listToArray(myList);

    for(i=1;i<arrayLen(myArr);i+5){

        //need to do some checking to confirm that myArr[i+1] etc exist
        processFive(myArr[i],myArr[i+1],myArr[i+2],myArr[i+3],myArr[i+4],myArr[i+5]);
    }
    function processFive(id1, id2, id3, id4, id5){
        //spin up thread and do processing...

    }

</cfscript>
于 2012-04-24T07:44:31.330 回答
0

诅咒我无法发表评论!我喜欢 BennyB 的回答,但你仍然可以有很多线程。如果您启动了一些线程,并让这些线程一次从数组中取出 5 个项目怎么办?

于 2012-04-25T02:53:41.617 回答