【发布时间】:2015-04-30 23:48:48
【问题描述】:
我正在使用 Gpars 线程池运行一组任务。任务执行时间变化很大,从几秒到 20 分钟不等。 (这些是黄瓜功能文件 FWIW。)
幸运的是,features 列表中的最后一个任务运行时间最长,因此当所有其他线程都完成时,整个进程会在那里执行 runtest('australian_government_rebate.feature') 25 分钟。
这意味着多线程没有兑现它的承诺。单线程测试需要 65 分钟才能运行,多线程测试需要 48 分钟。我希望 30 分钟或更长时间。
我的解决方案是按之前的执行时间对功能文件进行排序:
features = ...
features.sort { a, b -> b.executionTime() <=> a.executionTime() }
GParsPool.withPool(noOfCores) {
features.eachParallel { feature ->
runtest(feature)
}
}
我的问题是:我能否保证这些功能将按照它们在features 中出现的顺序呈现给 GParsPool?
【问题讨论】:
标签: multithreading groovy gpars