53 const int kNumThreads = 4;
54 const int kNumTasks = 100;
55 const int kNumAsyncCalls = kNumThreads * 4;
57 std::atomic<double> sum = 0.0;
58 std::function<void(
int)> unary_do_fn = [&](
int i) {
59 for (
double new_sum = sum; !sum.compare_exchange_weak(new_sum, new_sum + test_data.
data[
i]);) {
62 Barrier barrier(kNumTasks * kNumAsyncCalls);
63 std::function<void()> done = [&]() { barrier.Notify(); };
64 for (
int k = 0;
k < kNumAsyncCalls; ++
k) {
66 ForkJoinScheduler::ParallelForAsync(0, kNumTasks, 1, unary_do_fn, done, &test_data.
tp);
int i
Definition: BiCGSTAB_step_by_step.cpp:9
void Schedule(std::function< void()> fn) EIGEN_OVERRIDE
Definition: NonBlockingThreadPool.h:120
char char char int int * k
Definition: level2_impl.h:374
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
Definition: threads_fork_join.cpp:14
ThreadPool tp
Definition: threads_fork_join.cpp:15
std::vector< double > data
Definition: threads_fork_join.cpp:16
TestData make_test_data(int num_threads, int num_shards)
Definition: threads_fork_join.cpp:19