OSDN Git Service

Fix pthread_barrier_smoke test.
authorYabin Cui <yabinc@google.com>
Tue, 2 May 2017 19:57:39 +0000 (12:57 -0700)
committerYabin Cui <yabinc@google.com>
Tue, 2 May 2017 19:57:39 +0000 (12:57 -0700)
Bug: http://b/37652807
Test: run bionic-unit-tests.
Change-Id: Id7245223bc2a284efed6e710892b58947ef5d555

tests/pthread_test.cpp

index 87b4c81..fbf14c1 100755 (executable)
@@ -1963,8 +1963,8 @@ static void BarrierTestHelper(BarrierTestHelperArg* arg) {
     } else {
       ASSERT_EQ(0, result);
     }
-    arg->data->finished_mask |= (1 << arg->id);
-    if (arg->data->finished_mask == ((1 << arg->data->thread_count) - 1)) {
+    int mask = arg->data->finished_mask.fetch_or(1 << arg->id);
+    if (mask == ((1 << arg->data->thread_count) - 1)) {
       ASSERT_EQ(1, arg->data->serial_thread_count);
       arg->data->finished_iteration_count++;
       arg->data->finished_mask = 0;