Index: tests/OnceTest.cpp |
diff --git a/tests/OnceTest.cpp b/tests/OnceTest.cpp |
index 034c5d912f953705926d5ea19961627966730db7..35c2015166b98e9209ad9cf8fbf4aa858d65815f 100644 |
--- a/tests/OnceTest.cpp |
+++ b/tests/OnceTest.cpp |
@@ -28,42 +28,14 @@ DEF_TEST(SkOnce_Singlethreaded, r) { |
REPORTER_ASSERT(r, 5 == x); |
} |
-static void add_six(int* x) { |
- *x += 6; |
-} |
- |
-namespace { |
- |
-class Racer : public SkRunnable { |
-public: |
- SkOnceFlag* once; |
- int* ptr; |
- |
- void run() override { |
- SkOnce(once, add_six, ptr); |
- } |
-}; |
- |
-} // namespace |
- |
SK_DECLARE_STATIC_ONCE(mt_once); |
DEF_TEST(SkOnce_Multithreaded, r) { |
- const int kTasks = 16; |
- |
- // Make a bunch of tasks that will race to be the first to add six to x. |
- Racer racers[kTasks]; |
int x = 0; |
- for (int i = 0; i < kTasks; i++) { |
- racers[i].once = &mt_once; |
- racers[i].ptr = &x; |
- } |
- |
- // Let them race. |
- SkTaskGroup tg; |
- for (int i = 0; i < kTasks; i++) { |
- tg.add(&racers[i]); |
- } |
- tg.wait(); |
+ // Run a bunch of tasks to be the first to add six to x. |
+ sk_parallel_for(1021, [&](int) { |
+ void(*add_six)(int*) = [](int* p) { *p += 6; }; |
+ SkOnce(&mt_once, add_six, &x); |
+ }); |
// Only one should have done the +=. |
REPORTER_ASSERT(r, 6 == x); |