title: C++ Waiting for Multiple Threads
body: <p>I can't seem to find an exact answer to the threading question I have. I currently have a program that polls the Kinect V2 sensor for new frame data using OpenNI2. The problem is I need to poll each type of sensor; depth, IR, and RGB separately in order to get them at the same time. Here is where my threading questions comes in, I want to poll each of the three sensors in their own individual thread and when all functions calls have returned continue with the data processing.</p>
  
  <p>I understand how to link each new thread to the main thread to ensure all threads finish before the program exits, but how do I wait in the middle of my program for a specific set of threads to finish? Is there a function or feature of std::thread in c++11 that I am overlooking or is this something that needs to be manually done using a mutex or semaphores?</p>
  
  <p>pseudocode:</p>
  
  <pre><code>std::thread thread_RGB(Kinect::readFrame(Enum::RGB), kinect_1);
  std::thread thread_IR(Kinect::readFrame(Enum::IR), kinect_1);
  std::thread thread_depth(Kinect::readFrame(Enum::depth), kinect_1);
  
  // Wait for all threads to finish getting new frame data
  ...
  
  // Process data here
  process_data(kinect_1.RGB_data);
  process_data(kinect_1.IR_data);
  process_data(kinect_1.depth_data);
  </code></pre>