public static void For(SBThreadPool pool, int inclusiveStart, int exclusiveEnd, ParallelForIterationDelegate iterate) { if(inclusiveStart >= exclusiveEnd) return; using (ParallelForRun loopRun = new ParallelForRun(exclusiveEnd - inclusiveStart, inclusiveStart, iterate)) { for (int i = 0; i < pool.NumThreads; i++) { SBJob job = new ParallelForJob(loopRun); job.QueueInPool(pool); } loopRun.ThreadRunIterations(); loopRun.Join(); } }
public ParallelForJob(ParallelForRun loopRun) { this.loopRun = loopRun; }