From 26d2be17f068e993a0213347c158022cb5ab28b7 Mon Sep 17 00:00:00 2001 From: Puyan Lotfi Date: Tue, 6 Aug 2019 01:26:46 +0000 Subject: [PATCH] [NFC][DirectoryWatchedTests] Unlocks mutexes before signaling condition variable This should not affect actual behavior, but should pessimize the threading less by avoiding the situation where: * mutex is still locked * T1 notifies on condition variable * T2 wakes to check mutex * T2 sees mutex is still locked * T2 waits * T1 unlocks mutex * T2 tries again, acquires mutex. Differential Revision: https://reviews.llvm.org/D65708 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@367968 91177308-0d34-0410-b5e6-96231b3b80d8 --- unittests/DirectoryWatcher/DirectoryWatcherTest.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp b/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp index c26ba57354..52a6961605 100644 --- a/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp +++ b/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp @@ -132,8 +132,10 @@ struct VerifyingConsumer { } else { ExpectedInitial.erase(It); } - if (result()) + if (result()) { + L.unlock(); ResultIsReady.notify_one(); + } } void consumeNonInitial(DirectoryWatcher::Event E) { @@ -151,8 +153,10 @@ struct VerifyingConsumer { } else { ExpectedNonInitial.erase(It); } - if (result()) + if (result()) { + L.unlock(); ResultIsReady.notify_one(); + } } // This method is used by DirectoryWatcher. -- 2.40.0