mirror of
https://github.com/async-rs/async-std.git
synced 2025-03-03 16:49:42 +00:00
Merge pull request #927 from taiki-e/compare_and_swap
Replace deprecated compare_and_swap with compare_exchange
This commit is contained in:
commit
81cc56762a
2 changed files with 13 additions and 6 deletions
|
@ -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…
Reference in a new issue