Using condition variables
With condition variables, we can signal a thread when another thread has finished its work or when some other event occurs. For example, with condition variables, we can rewrite the prime number program from the Reading return values from threads recipe to join with the thread that finishes first. That way, the program isn't compelled to join with thread 1 first and then thread 2. Instead, the thread that finishes first signals to
main() using a condition variable that it has finished and then joins with that thread.
Knowing how to use condition variables will help you make your threaded programs more flexible.
In order for this recipe to make sense, it's advised that you have completed the Reading return values from threads recipe first. You'll also need the GCC compiler, the Makefile we wrote in the Writing your first threaded program recipe, and the Make tool.
How to do it…
In this recipe, we'll rewrite...