diff options
author | Rasmus Munk Larsen <rmlarsen@google.com> | 2019-11-08 17:44:50 -0800 |
---|---|---|
committer | Rasmus Munk Larsen <rmlarsen@google.com> | 2019-11-08 17:44:50 -0800 |
commit | ebf04fb3e8dcab201d56fd1e3df4bf9c2bdaefc5 (patch) | |
tree | 1be1c42e1e0d02f3a04e4cdeac89c064135c7910 /unsupported/test | |
parent | cc3d0e6a407d839487de13ecdd565c26c5294f9e (diff) |
Fix data race in css11_tensor_notification test.
Diffstat (limited to 'unsupported/test')
-rw-r--r-- | unsupported/test/cxx11_tensor_notification.cpp | 20 |
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); |