diff options
| author | Howard Hinnant <hhinnant@apple.com> | 2010-11-30 20:23:32 +0000 |
|---|---|---|
| committer | Howard Hinnant <hhinnant@apple.com> | 2010-11-30 20:23:32 +0000 |
| commit | 92e3718b135656bc0fe7c834b56d69ed3d2a8639 (patch) | |
| tree | df2a85aaca3c6c31d6f4ff1ee85521c7c254a4b3 /libcxx/test/thread/futures/futures.atomic_future/wait.pass.cpp | |
| parent | d3a58c8fa14e3682576c18eecf5d5a667fb221b1 (diff) | |
| download | bcm5719-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.cpp | 86 |
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)); - } -} |

