2
A client sends requests to two different services. Cancel them if a reply is not received from both within a timeout.
• active class Service1 {
  public: int Operation1();
};
• active class Service2 {
  public: int Operation2();
};
• void Process( active Service1& s1, active Service2& s2, int ms ) {
  future<int> result1 = s1.Operation1();
  future<int> result2 = s2.Operation2();
•   wait( (result1 && result2) || timeout(ms) );
  if( result1 && result2 ) {
    … // use result1 and result2
  else {
    result1.Cancel(); // cancel both
    result2.Cancel();
  }
}
•
Example: Multiple Service Requests