一次处理列表或记录集中的 5 个项目



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

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

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

我确信这很容易做到,但我就是想不出我会怎么做。

谢谢

如何将列表转换为数组:

显然,这是非常裸露的骨头,但它可以提供开始:

<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>

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

最新更新