# `hint_core_should_pause`

The tracking issue for this feature is: #41196

Many programs have spin loops like the following:

    # #![allow(unused_variables)]
    #fn main() {
    use std::sync::atomic::{AtomicBool,Ordering};

    fn spin_loop(value: &AtomicBool) {
        loop {
            if value.load(Ordering::Acquire) {
                 break;
            }
        }
    }
    #}

These programs can be improved in performance like so:

    # #![allow(unused_variables)]
    #![feature(hint_core_should_pause)]
    #fn main() {
    use std::sync::atomic;
    use std::sync::atomic::{AtomicBool,Ordering};

    fn spin_loop(value: &AtomicBool) {
        loop {
            if value.load(Ordering::Acquire) {
                 break;
            }
            atomic::hint_core_should_pause();
        }
    }
    #}

Further improvements could combine `hint_core_should_pause` with exponential backoff or `std::thread::yield_now`.