我有一个成员 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 个项目,该怎么办?