Relax memory ordering used in min_stack

`min_stack` does not provide any synchronization guarantees to its callers, and only requires atomicity for `MIN` itself, so relaxed memory ordering is sufficient.
This commit is contained in:
Austin Kiekintveld 2022-05-01 15:55:54 -07:00 committed by GitHub
parent a933de8398
commit 63a90efe2f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,7 +4,7 @@ use crate::sys::thread as imp;
pub fn min_stack() -> usize {
static MIN: atomic::AtomicUsize = atomic::AtomicUsize::new(0);
match MIN.load(Ordering::SeqCst) {
match MIN.load(Ordering::Relaxed) {
0 => {}
n => return n - 1,
}
@ -13,6 +13,6 @@ pub fn min_stack() -> usize {
// 0 is our sentinel value, so ensure that we'll never see 0 after
// initialization has run
MIN.store(amt + 1, Ordering::SeqCst);
MIN.store(amt + 1, Ordering::Relaxed);
amt
}