diff options
author | MarcoFalke <falke.marco@gmail.com> | 2021-11-29 11:02:41 +0100 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2021-11-29 11:02:48 +0100 |
commit | b4f647fa36a3336774ab616048bc6709bdc59fa1 (patch) | |
tree | 2cb058cce80279e13f1f709c1ebd8837da7f93e3 /test/sanitizer_suppressions | |
parent | e521c5589e253b1a6631d085b3ac578751883082 (diff) | |
parent | 459e208276a4d1457d37bf41c977e62caf05456d (diff) | |
download | bitcoin-b4f647fa36a3336774ab616048bc6709bdc59fa1.tar.xz |
Merge bitcoin/bitcoin#23397: Avoid excessive lock contention in CCheckQueue::Add
459e208276a4d1457d37bf41c977e62caf05456d Exit early for an empty vChecks in CCheckQueue::Add (Hennadii Stepanov)
c43aa623435a277a692dbde784e8a7146f5573e9 Avoid excessive lock contention in CCheckQueue::Add (Hennadii Stepanov)
Pull request description:
This PR significantly reduces lock contention in the `CCheckQueue` class by releasing a mutex before calling `std::condition_variable::notify_one` and `std::condition_variable::notify_all`.
From C++ [docs](https://en.cppreference.com/w/cpp/thread/condition_variable/notify_one):
> The notifying thread does not need to hold the lock on the same mutex as the one held by the waiting thread(s); in fact doing so is a pessimization, since the notified thread would immediately block again, waiting for the notifying thread to release the lock.
Related to:
- #23167
- #23223
ACKs for top commit:
martinus:
ACK 459e208, codereview and tested. I first thought this introduced a segfault in `psbt_wallet_tests/psbt_updater_test` because that test failed for me, but thats a different issue fixed in #23403.
vasild:
ACK 459e208276a4d1457d37bf41c977e62caf05456d
theStack:
Code-review ACK 459e208276a4d1457d37bf41c977e62caf05456d
Tree-SHA512: c197858656392ba3ebcd638d713cf93c9fb48b7b3bad193209490d2828f9c7e3ae4dee6f84674f2f34dceed894139562e29579ee7299e06756c8c990caddc5ed
Diffstat (limited to 'test/sanitizer_suppressions')
0 files changed, 0 insertions, 0 deletions