private void DoWork(object o) { SlicedList <T> slicedList = (SlicedList <T>)o; foreach (int i in slicedList.indexes) { action(slicedList.items[i]); } slicedList.manualResetEvent.Set(); }
public ParallelProcessor(int NumberOfThreads, Action <T> Action) { this.numberOfThreads = NumberOfThreads; this.listSlices = new SlicedList <T> [numberOfThreads]; this.action = Action; this.manualResetEvents = new ManualResetEvent[numberOfThreads]; for (int i = 0; i < numberOfThreads; i++) { listSlices[i] = new SlicedList <T>(); manualResetEvents[i] = new ManualResetEvent(false); listSlices[i].indexes = new LinkedList <int>(); listSlices[i].manualResetEvent = manualResetEvents[i]; } }