diff options
Diffstat (limited to 'libcxx/test/thread/thread.condition')
| -rw-r--r-- | libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp | 23 | ||||
| -rw-r--r-- | libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp | 2 |
2 files changed, 23 insertions, 2 deletions
diff --git a/libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp b/libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp index 6cc9067effc..6584a7712c2 100644 --- a/libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp +++ b/libcxx/test/thread/thread.condition/notify_all_at_thread_exit.pass.cpp @@ -13,9 +13,30 @@ // notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk); #include <condition_variable> +#include <mutex> +#include <thread> +#include <chrono> #include <cassert> +std::condition_variable cv; +std::mutex mut; + +typedef std::chrono::milliseconds ms; +typedef std::chrono::high_resolution_clock Clock; + +void func() +{ + std::unique_lock<std::mutex> lk(mut); + std::notify_all_at_thread_exit(cv, std::move(lk)); + std::this_thread::sleep_for(ms(300)); +} + int main() { -#error notify_all_at_thread_exit not implemented + std::unique_lock<std::mutex> lk(mut); + std::thread(func).detach(); + Clock::time_point t0 = Clock::now(); + cv.wait(lk); + Clock::time_point t1 = Clock::now(); + assert(t1-t0 > ms(250)); } diff --git a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp index a0e347db3e8..ac071d0ae88 100644 --- a/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp +++ b/libcxx/test/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp @@ -61,7 +61,7 @@ void f() } else { - assert(t1 - t0 - milliseconds(250) < milliseconds(2)); + assert(t1 - t0 - milliseconds(250) < milliseconds(5)); assert(test2 == 0); } ++runs; |

