Uses Acquire/Release semantics for test_accounts_locks_multithreaded() #4225
+3
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Similar to #4222, but for a test.
test_accounts_locks_multithreaded()
uses Sequential Consistency semantics even though thecounter
atomic never interacts with another atomic. Thus, sequential consistency is not required for correctness. Additionally, I argue that using sequential consistency when not required is a bug, as it implies a relationship that is otherwise not explicit. Since there is no relationship with another atomic, the code is both (1) less performant, and (2) communicates wrong information to the reader.Here's the PR where the test was added: solana-labs#4691. I wanted to see if the test originally had another atomic variable, which may've necessitated sequential consistency. Looks like "no".
Summary of Changes
Switch ordering to use Acquire-Release semantics.
I ran this test in a loop on my macbook for 6 hours without any failures as well.