• Am I cool or not ?

    From Bonita Montero@Bonita.Montero@gmail.com to comp.lang.c++ on Mon Oct 20 15:45:35 2025
    From Newsgroup: comp.lang.c++

    void threaded_timer::timer::executor() noexcept
    {
    unsigned ref = m_nProcessing.load( memory_order_relaxed );
    do
    if( ref && !m_overlapped || ref == -1 )
    return;
    while( !m_nProcessing.compare_exchange_strong( ref, ref + 1, memory_order_acquire, memory_order_relaxed ) );
    m_fn();
    ref = m_nProcessing.load( memory_order_relaxed );
    do
    if( ref == -1 )
    return;
    while( !m_nProcessing.compare_exchange_strong( ref, ref - 1, memory_order_release, memory_order_relaxed ) );
    if( ref == 1 )
    m_nProcessing.notify_one();
    }
    --- Synchronet 3.21a-Linux NewsLink 1.2