This chapter will focus on the most common mechanisms you can use to synchronize access to a shared resource. The synchronization mechanisms we will look at prevent a critical section (the program segment responsible for a resource) from being executed concurrently from two or more processes or threads. In this chapter, you'll learn how to use both POSIX and C++ standard library synchronization building blocks such as mutexes, std::condition_variable, std::promise, and std::future.
This chapter will cover the following recipes:
- Using POSIX mutexes
- Using POSIX semaphores
- POSIX semaphores advanced usage
- Synchronization building blocks
- Learning inter-thread communication with simple events
- Learning inter-thread communication with condition variables