From 7bfff85355215a4702d4d42b1f3bfbfc08977372 Mon Sep 17 00:00:00 2001 From: Benoit Steiner Date: Thu, 8 Dec 2016 08:12:49 -0800 Subject: Added support for thread cancellation on Linux --- unsupported/test/cxx11_non_blocking_thread_pool.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'unsupported/test/cxx11_non_blocking_thread_pool.cpp') 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 #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()); } -- cgit v1.2.3