In this chapter, we discussed the issues we might expect to encounter while developing a concurrent program, and the solutions we should employ to resolve them. The following are the main points that we covered in this chapter.
- We covered concurrency issues. Intrinsic issues exist in all concurrent systems when different interleavings dissatisfy the invariant constraints of a system.
- We discussed post-synchronization issues that only occur after employing a synchronization technique in a poor and wrong way.
- We explored the control mechanisms employed to keep the invariant constraints satisfied.
- Semaphores are key tools in implementing control mechanisms. Mutexes are a special category of semaphores that allow only one task at a time to enter a critical section based on mutual exclusion conditions.
- Monitor objects that encapsulate a mutex and a condition variable can be used in situations when a task is waiting for a condition to be met.
- We finally...