aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/test/cxx11_tensor_notification.cpp
diff options
context:
space:
mode:
authorGravatar Rasmus Munk Larsen <rmlarsen@google.com>2019-11-08 17:44:50 -0800
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2019-11-08 17:44:50 -0800
commitebf04fb3e8dcab201d56fd1e3df4bf9c2bdaefc5 (patch)
tree1be1c42e1e0d02f3a04e4cdeac89c064135c7910 /unsupported/test/cxx11_tensor_notification.cpp
parentcc3d0e6a407d839487de13ecdd565c26c5294f9e (diff)
Fix data race in css11_tensor_notification test.
Diffstat (limited to 'unsupported/test/cxx11_tensor_notification.cpp')
-rw-r--r--unsupported/test/cxx11_tensor_notification.cpp20
1 files changed, 6 insertions, 14 deletions
diff --git a/unsupported/test/cxx11_tensor_notification.cpp b/unsupported/test/cxx11_tensor_notification.cpp
index f63fee013..2bade8dc7 100644
--- a/unsupported/test/cxx11_tensor_notification.cpp
+++ b/unsupported/test/cxx11_tensor_notification.cpp
@@ -9,27 +9,19 @@
#define EIGEN_USE_THREADS
+#include <atomic>
+
#include <stdlib.h>
#include "main.h"
#include <Eigen/CXX11/Tensor>
-
-namespace {
-
-void WaitAndAdd(Eigen::Notification* n, int* counter) {
- n->Wait();
- *counter = *counter + 1;
-}
-
-} // namespace
-
static void test_notification_single()
{
ThreadPool thread_pool(1);
- int counter = 0;
+ std::atomic<int> counter(0);
Eigen::Notification n;
- std::function<void()> func = std::bind(&WaitAndAdd, &n, &counter);
+ auto func = [&n, &counter](){ n.Wait(); ++counter;};
thread_pool.Schedule(func);
EIGEN_SLEEP(1000);
@@ -51,9 +43,9 @@ static void test_notification_multiple()
{
ThreadPool thread_pool(1);
- int counter = 0;
+ std::atomic<int> counter(0);
Eigen::Notification n;
- std::function<void()> func = std::bind(&WaitAndAdd, &n, &counter);
+ auto func = [&n, &counter](){ n.Wait(); ++counter;};
thread_pool.Schedule(func);
thread_pool.Schedule(func);
thread_pool.Schedule(func);