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

@@ -86,13 +86,13 @@ impl Worker {
future::loop_fn(ini, |(stealer, channel, wait, wait_mutex, deleting)| {
{
let mut lock = wait_mutex.lock();
if deleting.load(AtomicOrdering::Acquire) {
if deleting.load(AtomicOrdering::SeqCst) {
return Ok(Loop::Break(()));
}
wait.wait(&mut lock);
}
while !deleting.load(AtomicOrdering::Acquire) {
while !deleting.load(AtomicOrdering::SeqCst) {
match stealer.steal() {
deque::Steal::Data(work) => {
Worker::do_work(work, channel.clone())
@@ -147,7 +147,7 @@ impl Drop for Worker {
fn drop(&mut self) {
trace!(target: "shutdown", "[IoWorker] Closing...");
let _ = self.wait_mutex.lock();
self.deleting.store(true, AtomicOrdering::Release);
self.deleting.store(true, AtomicOrdering::SeqCst);
self.wait.notify_all();
if let Some(thread) = self.thread.take() {
thread.join().ok();