One of my projects is a perfect candidate for concurrency. There is a collection of entities that each need to be processed, and each can be processed independently. For the sake of Separation of Concerns, I developed a WorkManager class dedicated to performing an action on the elements of an enumeration. Before I spill the code, here is how it is used:
Entity[] myCollection = LoadEntities();
WorkManager manager = new WorkManager();manager.ForEach(myCollection, e => e.Process());
Note the lambda expression above. It means that for each Entity in myCollection, the code will execute its Process method. The program will create a separate thread for each processor, and evenly distribute the workload across the threads.
And without further delay, the WorkManager class:
Continue reading Concurrency Encapsulation...
