Author: ericwf Date: Thu May 11 21:02:09 2017 New Revision: 302865 URL: http://llvm.org/viewvc/llvm-project?rev=302865&view=rev Log: Move POSIX specific test under test/libcxx subdirectory
Added: libcxx/trunk/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp - copied, changed from r302864, libcxx/trunk/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp Removed: libcxx/trunk/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp Copied: libcxx/trunk/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp (from r302864, libcxx/trunk/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp) URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp?p2=libcxx/trunk/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp&p1=libcxx/trunk/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp&r1=302864&r2=302865&rev=302865&view=diff ============================================================================== (empty) Removed: libcxx/trunk/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp?rev=302864&view=auto ============================================================================== --- libcxx/trunk/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp (original) +++ libcxx/trunk/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp (removed) @@ -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(); - } -} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits