Strict memory order (#306)
* Make MemoryOrdering more strict * fmt * Strict mem order for priority_tasks_gate
This commit is contained in:
@@ -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>())
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user