Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.64 KB | None | 0 0
  1. void test(int a, Exchanger<int>& e, std::promise<int> p) {
  2.     a = e.exchange(a);
  3.     p.set_value_at_thread_exit(a);
  4. }
  5.  
  6.  
  7. int main()
  8. {
  9.     Exchanger<int> e;
  10.     std::promise<int> p1, p2;
  11.     std::future<int> f1, f2;
  12.  
  13.     f1 = p1.get_future();
  14.     f2 = p2.get_future();
  15.  
  16.     std::thread t1([&e, &p1]() { int a = 3;
  17.     a = e.exchange(a);
  18.     p1.set_value_at_thread_exit(a);
  19.      });
  20.  
  21.     std::thread t2(test, 10, std::ref(e), std::move(p2));
  22.  
  23.     t1.detach();
  24.     t2.detach();
  25.  
  26.    
  27.  
  28.     std::cout << "threads created\n";
  29.  
  30.  
  31.     std::cout << "thread 1: " << f1.get() << "\n";
  32.     std::cout << "thread 2: " << f2.get() << "\n";
  33.  
  34.     std::cout << "finished\n";
  35.  
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement