summaryrefslogtreecommitdiffstats
path: root/libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp')
-rw-r--r--libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp86
1 files changed, 0 insertions, 86 deletions
diff --git a/libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp b/libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp
deleted file mode 100644
index a2e52885555..00000000000
--- a/libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <future>
-
-// class atomic_future<R>
-
-// void wait() const;
-
-#include <future>
-#include <cassert>
-
-void func1(std::promise<int>& p)
-{
- std::this_thread::sleep_for(std::chrono::milliseconds(500));
- p.set_value(3);
-}
-
-int j = 0;
-
-void func3(std::promise<int&>& p)
-{
- std::this_thread::sleep_for(std::chrono::milliseconds(500));
- j = 5;
- p.set_value(j);
-}
-
-void func5(std::promise<void>& p)
-{
- std::this_thread::sleep_for(std::chrono::milliseconds(500));
- p.set_value();
-}
-
-int main()
-{
- typedef std::chrono::high_resolution_clock Clock;
- typedef std::chrono::duration<double, std::milli> ms;
- {
- typedef int T;
- std::promise<T> p;
- std::atomic_future<T> f = p.get_future();
- std::thread(func1, std::move(p)).detach();
- assert(f.valid());
- f.wait();
- assert(f.valid());
- Clock::time_point t0 = Clock::now();
- f.wait();
- Clock::time_point t1 = Clock::now();
- assert(f.valid());
- assert(t1-t0 < ms(5));
- }
- {
- typedef int& T;
- std::promise<T> p;
- std::atomic_future<T> f = p.get_future();
- std::thread(func3, std::move(p)).detach();
- assert(f.valid());
- f.wait();
- assert(f.valid());
- Clock::time_point t0 = Clock::now();
- f.wait();
- Clock::time_point t1 = Clock::now();
- assert(f.valid());
- assert(t1-t0 < ms(5));
- }
- {
- typedef void T;
- std::promise<T> p;
- std::atomic_future<T> f = p.get_future();
- std::thread(func5, std::move(p)).detach();
- assert(f.valid());
- f.wait();
- assert(f.valid());
- Clock::time_point t0 = Clock::now();
- f.wait();
- Clock::time_point t1 = Clock::now();
- assert(f.valid());
- assert(t1-t0 < ms(5));
- }
-}
OpenPOWER on IntegriCloud