Exemplo n.º 1
0
        private void DoWork(object o)
        {
            SlicedList <T> slicedList = (SlicedList <T>)o;

            foreach (int i in slicedList.indexes)
            {
                action(slicedList.items[i]);
            }
            slicedList.manualResetEvent.Set();
        }
Exemplo n.º 2
0
        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];
            }
        }