Organizing execution with groups and semaphores

Groups and semaphores help you to organize the execution of your program when you need to do the following:

  • Wait for one or more tasks to complete
  • Ensure that a resource has proper access control, across multiple contexts