Merge pull request #927 from taiki-e/compare_and_swap

Replace deprecated compare_and_swap with compare_exchange
pull/925/head
Yoshua Wuyts 3 years ago committed by GitHub
commit 81cc56762a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,10 +1,10 @@
use std::cell::UnsafeCell;
use std::fmt;
use std::future::Future;
use std::isize;
use std::ops::{Deref, DerefMut};
use std::pin::Pin;
use std::process;
use std::future::Future;
use std::sync::atomic::{AtomicUsize, Ordering};
use crate::sync::WakerSet;
@ -301,7 +301,11 @@ impl<T: ?Sized> RwLock<T> {
/// # })
/// ```
pub fn try_write(&self) -> Option<RwLockWriteGuard<'_, T>> {
if self.state.compare_and_swap(0, WRITE_LOCK, Ordering::SeqCst) == 0 {
if self
.state
.compare_exchange(0, WRITE_LOCK, Ordering::SeqCst, Ordering::SeqCst)
.is_ok()
{
Some(RwLockWriteGuard(self))
} else {
None
@ -318,7 +322,10 @@ impl<T: ?Sized> RwLock<T> {
/// let lock = RwLock::new(10);
/// assert_eq!(lock.into_inner(), 10);
/// ```
pub fn into_inner(self) -> T where T: Sized {
pub fn into_inner(self) -> T
where
T: Sized,
{
self.value.into_inner()
}

@ -124,9 +124,9 @@ impl<T: Send + 'static> LocalKey<T> {
std::process::abort();
}
match key.compare_and_swap(0, counter, Ordering::AcqRel) {
0 => counter,
k => k,
match key.compare_exchange(0, counter, Ordering::AcqRel, Ordering::Acquire) {
Ok(_) => counter,
Err(k) => k,
}
}

Loading…
Cancel
Save