@@ -31,7 +31,7 @@ use crossbeam_utils::Backoff;
3131/// ```
3232#[ derive( Debug ) ]
3333pub struct Spinlock < T > {
34- flag : AtomicBool ,
34+ locked : AtomicBool ,
3535 value : UnsafeCell < T > ,
3636}
3737
@@ -42,23 +42,23 @@ impl<T> Spinlock<T> {
4242 /// Returns a new spinlock initialized with `value`.
4343 pub const fn new ( value : T ) -> Spinlock < T > {
4444 Spinlock {
45- flag : AtomicBool :: new ( false ) ,
45+ locked : AtomicBool :: new ( false ) ,
4646 value : UnsafeCell :: new ( value) ,
4747 }
4848 }
4949
5050 /// Locks the spinlock.
5151 pub fn lock ( & self ) -> SpinlockGuard < ' _ , T > {
5252 let backoff = Backoff :: new ( ) ;
53- while self . flag . swap ( true , Ordering :: Acquire ) {
53+ while self . locked . compare_and_swap ( false , true , Ordering :: Acquire ) {
5454 backoff. snooze ( ) ;
5555 }
5656 SpinlockGuard { parent : self }
5757 }
5858
5959 /// Attempts to lock the spinlock.
6060 pub fn try_lock ( & self ) -> Option < SpinlockGuard < ' _ , T > > {
61- if self . flag . swap ( true , Ordering :: Acquire ) {
61+ if self . locked . swap ( true , Ordering :: Acquire ) {
6262 None
6363 } else {
6464 Some ( SpinlockGuard { parent : self } )
@@ -77,7 +77,7 @@ unsafe impl<T: Sync> Sync for SpinlockGuard<'_, T> {}
7777
7878impl < ' a , T > Drop for SpinlockGuard < ' a , T > {
7979 fn drop ( & mut self ) {
80- self . parent . flag . store ( false , Ordering :: Release ) ;
80+ self . parent . locked . store ( false , Ordering :: Release ) ;
8181 }
8282}
8383
0 commit comments