Strict memory order (#306)

* Make MemoryOrdering more strict

* fmt

* Strict mem order for priority_tasks_gate
This commit is contained in:
rakita
2021-03-10 12:36:23 +01:00
committed by GitHub
parent e2024c4b81
commit eca8fb74ae
14 changed files with 56 additions and 66 deletions

View File

@@ -175,18 +175,13 @@ struct QueueSignal {
impl QueueSignal {
fn set_sync(&self) {
// Do not signal when we are about to close
if self.deleting.load(AtomicOrdering::Relaxed) {
if self.deleting.load(AtomicOrdering::SeqCst) {
return;
}
if self
.signalled
.compare_exchange(
false,
true,
AtomicOrdering::Relaxed,
AtomicOrdering::Relaxed,
)
.compare_exchange(false, true, AtomicOrdering::SeqCst, AtomicOrdering::SeqCst)
.is_ok()
{
let channel = self.message_channel.lock().clone();
@@ -198,18 +193,13 @@ impl QueueSignal {
fn set_async(&self) {
// Do not signal when we are about to close
if self.deleting.load(AtomicOrdering::Relaxed) {
if self.deleting.load(AtomicOrdering::SeqCst) {
return;
}
if self
.signalled
.compare_exchange(
false,
true,
AtomicOrdering::Relaxed,
AtomicOrdering::Relaxed,
)
.compare_exchange(false, true, AtomicOrdering::SeqCst, AtomicOrdering::SeqCst)
.is_ok()
{
let channel = self.message_channel.lock().clone();
@@ -220,7 +210,7 @@ impl QueueSignal {
}
fn reset(&self) {
self.signalled.store(false, AtomicOrdering::Relaxed);
self.signalled.store(false, AtomicOrdering::SeqCst);
}
}
@@ -499,9 +489,9 @@ impl<K: Kind> VerificationQueue<K> {
verified.clear();
let sizes = &self.verification.sizes;
sizes.unverified.store(0, AtomicOrdering::Release);
sizes.verifying.store(0, AtomicOrdering::Release);
sizes.verified.store(0, AtomicOrdering::Release);
sizes.unverified.store(0, AtomicOrdering::SeqCst);
sizes.verifying.store(0, AtomicOrdering::SeqCst);
sizes.verified.store(0, AtomicOrdering::SeqCst);
*self.total_difficulty.write() = 0.into();
self.processing.write().clear();
@@ -728,7 +718,7 @@ impl<K: Kind> VerificationQueue<K> {
.verification
.sizes
.unverified
.load(AtomicOrdering::Acquire);
.load(AtomicOrdering::SeqCst);
(len, size + len * size_of::<K::Unverified>())
};
@@ -738,7 +728,7 @@ impl<K: Kind> VerificationQueue<K> {
.verification
.sizes
.verifying
.load(AtomicOrdering::Acquire);
.load(AtomicOrdering::SeqCst);
(len, size + len * size_of::<Verifying<K>>())
};
let (verified_len, verified_bytes) = {
@@ -747,7 +737,7 @@ impl<K: Kind> VerificationQueue<K> {
.verification
.sizes
.verified
.load(AtomicOrdering::Acquire);
.load(AtomicOrdering::SeqCst);
(len, size + len * size_of::<K::Verified>())
};