aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/test/cxx11_non_blocking_thread_pool.cpp
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2016-12-08 08:12:49 -0800
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2016-12-08 08:12:49 -0800
commit7bfff85355215a4702d4d42b1f3bfbfc08977372 (patch)
tree8698dff508476a28aece2f17fd5793407b987a15 /unsupported/test/cxx11_non_blocking_thread_pool.cpp
parent6811e6cf492731b3e1504bfa42237f909c93d129 (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.cpp21
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());
}