diff options
| author | Eric Fiselier <eric@efcs.ca> | 2017-05-12 02:02:09 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2017-05-12 02:02:09 +0000 |
| commit | 581072e1a6591d65e55b21d6dce2459a3dffe81a (patch) | |
| tree | 8e1b051df5dc5ef73c3d114edaffae0cecf43ffd /libcxx/test/std/thread | |
| parent | 873f8d2ebeb60908cbc5c54d1c8045e0a5552b35 (diff) | |
| download | bcm5719-llvm-581072e1a6591d65e55b21d6dce2459a3dffe81a.tar.gz bcm5719-llvm-581072e1a6591d65e55b21d6dce2459a3dffe81a.zip | |
Move POSIX specific test under test/libcxx subdirectory
llvm-svn: 302865
Diffstat (limited to 'libcxx/test/std/thread')
| -rw-r--r-- | libcxx/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/libcxx/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp b/libcxx/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp deleted file mode 100644 index de225fe7838..00000000000 --- a/libcxx/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp +++ /dev/null @@ -1,76 +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. -// -//===----------------------------------------------------------------------===// -// -// UNSUPPORTED: libcpp-has-no-threads -// REQUIRES: libcpp-has-thread-api-pthread - -// notify_all_at_thread_exit(...) requires move semantics to transfer the -// unique_lock. -// UNSUPPORTED: c++98, c++03 - -// <condition_variable> - -// void -// notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk); - -// Test that this function works with threads that were not created by -// std::thread. See http://llvm.org/PR30202. - - -#include <condition_variable> -#include <mutex> -#include <thread> -#include <chrono> -#include <cassert> -#include <pthread.h> - -std::condition_variable cv; -std::mutex mut; -bool exited = false; - -typedef std::chrono::milliseconds ms; -typedef std::chrono::high_resolution_clock Clock; - -void* func(void*) -{ - std::unique_lock<std::mutex> lk(mut); - std::notify_all_at_thread_exit(cv, std::move(lk)); - std::this_thread::sleep_for(ms(300)); - exited = true; - return nullptr; -} - -int main() -{ - { - std::unique_lock<std::mutex> lk(mut); - pthread_t id; - int res = pthread_create(&id, 0, &func, nullptr); - assert(res == 0); - Clock::time_point t0 = Clock::now(); - assert(exited == false); - cv.wait(lk); - Clock::time_point t1 = Clock::now(); - assert(exited); - assert(t1-t0 > ms(250)); - pthread_join(id, 0); - } - exited = false; - { - std::unique_lock<std::mutex> lk(mut); - std::thread t(&func, nullptr); - Clock::time_point t0 = Clock::now(); - assert(exited == false); - cv.wait(lk); - Clock::time_point t1 = Clock::now(); - assert(exited); - assert(t1-t0 > ms(250)); - t.join(); - } -} |

