summaryrefslogtreecommitdiffstats
path: root/libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp
diff options
context:
space:
mode:
authorHoward Hinnant <hhinnant@apple.com>2010-11-30 20:23:32 +0000
committerHoward Hinnant <hhinnant@apple.com>2010-11-30 20:23:32 +0000
commit92e3718b135656bc0fe7c834b56d69ed3d2a8639 (patch)
treedf2a85aaca3c6c31d6f4ff1ee85521c7c254a4b3 /libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp
parentd3a58c8fa14e3682576c18eecf5d5a667fb221b1 (diff)
downloadbcm5719-llvm-92e3718b135656bc0fe7c834b56d69ed3d2a8639.tar.gz
bcm5719-llvm-92e3718b135656bc0fe7c834b56d69ed3d2a8639.zip
Implemented N3194
llvm-svn: 120458
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