diff --git a/internal/platform/implementation/apple/count_down_latch.cc b/internal/platform/implementation/apple/count_down_latch.cc index 98c8de8f..69641502 100644 --- a/internal/platform/implementation/apple/count_down_latch.cc +++ b/internal/platform/implementation/apple/count_down_latch.cc @@ -26,9 +26,9 @@ Exception CountDownLatch::Await() { } ExceptionOr CountDownLatch::Await(absl::Duration timeout) { - bool condition = mutex_.LockWhenWithTimeout( + absl::MutexLock lock(&mutex_); + bool condition = mutex_.AwaitWithTimeout( absl::Condition(IsZeroOrNegative, &count_), timeout); - mutex_.Unlock(); return ExceptionOr(condition); } diff --git a/internal/platform/implementation/apple/count_down_latch_test.cc b/internal/platform/implementation/apple/count_down_latch_test.cc index 77b655be..3b26af10 100644 --- a/internal/platform/implementation/apple/count_down_latch_test.cc +++ b/internal/platform/implementation/apple/count_down_latch_test.cc @@ -79,6 +79,15 @@ TEST(CountDownLatchTest, InitialCountNegativeAwaitDoesNotBlock) { EXPECT_TRUE(response.Ok()); } +TEST(CountDownLatchTest, CountDown) { + CountDownLatch latch(2); + latch.CountDown(); + latch.CountDown(); + auto response = latch.Await(absl::Milliseconds(100)); + EXPECT_TRUE(response.ok()); + EXPECT_TRUE(response.result()); +} + } // namespace } // namespace apple } // namespace nearby