Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void test(int a, Exchanger<int>& e, std::promise<int> p) {
- a = e.exchange(a);
- p.set_value_at_thread_exit(a);
- }
- int main()
- {
- Exchanger<int> e;
- std::promise<int> p1, p2;
- std::future<int> f1, f2;
- f1 = p1.get_future();
- f2 = p2.get_future();
- std::thread t1([&e, &p1]() { int a = 3;
- a = e.exchange(a);
- p1.set_value_at_thread_exit(a);
- });
- std::thread t2(test, 10, std::ref(e), std::move(p2));
- t1.detach();
- t2.detach();
- std::cout << "threads created\n";
- std::cout << "thread 1: " << f1.get() << "\n";
- std::cout << "thread 2: " << f2.get() << "\n";
- std::cout << "finished\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement