We have learned a lot in this chapter about using object-oriented capabilities offered by the C# programming language, using design patterns for simplifying the parallelism complexity, and avoiding synchronization pains. Specifically, we covered:
- Using the factory method class creational pattern to create classes prepared for inheritance, and hence simplifying the creation of parallelized code
- Designing efficient and pragmatic object-oriented multithreaded code
- Creating instances and calling some methods in single-threaded code to create encapsulated and well-managed multithreaded code
- Encapsulating multithreaded algorithms in classes to simplify the development process and to allow a division of the development team in single-threaded and ...