diff options
author | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2016-12-08 08:12:49 -0800 |
---|---|---|
committer | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2016-12-08 08:12:49 -0800 |
commit | 7bfff85355215a4702d4d42b1f3bfbfc08977372 (patch) | |
tree | 8698dff508476a28aece2f17fd5793407b987a15 /unsupported/test/cxx11_non_blocking_thread_pool.cpp | |
parent | 6811e6cf492731b3e1504bfa42237f909c93d129 (diff) |
Added support for thread cancellation on Linux
Diffstat (limited to 'unsupported/test/cxx11_non_blocking_thread_pool.cpp')
-rw-r--r-- | unsupported/test/cxx11_non_blocking_thread_pool.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/unsupported/test/cxx11_non_blocking_thread_pool.cpp b/unsupported/test/cxx11_non_blocking_thread_pool.cpp index 5f9bb938b..0fc5a257a 100644 --- a/unsupported/test/cxx11_non_blocking_thread_pool.cpp +++ b/unsupported/test/cxx11_non_blocking_thread_pool.cpp @@ -10,6 +10,7 @@ #define EIGEN_USE_THREADS #include "main.h" +#include <unistd.h> #include "Eigen/CXX11/ThreadPool" static void test_create_destroy_empty_pool() @@ -100,8 +101,28 @@ static void test_parallelism() } } + +static void test_cancel() +{ + NonBlockingThreadPool tp(4); + +#ifdef EIGEN_SUPPORTS_THREAD_CANCELLATION + // Put 2 threads to sleep for much longer than the default test timeout. + tp.Schedule([]() { sleep(3600); } ); + tp.Schedule([]() { sleep(3600 * 24); } ); +#else + // Make 2 threads sleep for a short period of time + tp.Schedule([]() { sleep(1); } ); + tp.Schedule([]() { sleep(2); } ); +#endif + + // Call cancel: + tp.Cancel(); +} + void test_cxx11_non_blocking_thread_pool() { CALL_SUBTEST(test_create_destroy_empty_pool()); CALL_SUBTEST(test_parallelism()); + CALL_SUBTEST(test_cancel()); } |