One main benefit of using threads is the ease of using synchronization facilities. Three basic synchronization techniques are implemented in the threads library: mutexes, condition variables, and joining. More complex synchronization objects can be built using the primitive objects. This is discussed in Making Complex Synchronization Objects.
The following information will help you in using the synchronization facilities:
Threads Library Quick Reference.