Open Search
    CpuYield Class Reference

    #include <cpuyield.h>

    Inheritance diagram for CpuYield:

    Public Member Functions

     CpuYield (const void *res=nullptr)
     
     ~CpuYield ()
     
    void Reset ()
     
    void Pause ()
     

    Static Public Member Functions

    static void Wait (Int cnt)
     

    Static Private Member Functions

    static void _mm_pause ()
     

    Additional Inherited Members

    - Protected Types inherited from CpuYieldState
    using SwitchDelegate = void(*)(CpuYieldState *state, const void *resource)
     
    - Protected Attributes inherited from CpuYieldState
    Int32 _count
     
    Int32 _loopSize
     
    const void * _resource
     
    - Static Protected Attributes inherited from CpuYieldState
    static const Int LOOPS_START_COUNT
     
    static const Int LOOPS_MAX_GRANULARITY
     
    static const Int LOOPS_BEFORE_YIELD
     
    static const Int LOOPS_BEFORE_SLEEP
     
    static const UInt LOCK_ACQUIRE
     
    static const UInt LOCK_SPIN
     
    static const UInt LOCK_RELEASE
     
    static const UInt MAX_STATE_ENUM
     

    Constructor & Destructor Documentation

    ◆ CpuYield()

    CpuYield ( const void *  res = nullptr)
    explicit
    Parameters
    [in]resThe contended resource because of which Pause might have to be called. Might be a nullptr (but shouldn't).

    ◆ ~CpuYield()

    ~CpuYield ( )

    Member Function Documentation

    ◆ Reset()

    void Reset ( )

    ◆ Pause()

    void Pause ( )

    Pauses a little while until the contended resource hopefully becomes available again. Depending on the number of calls this will either just do a light spin loop or it might put the thread to sleep. Furthermore offending threads might be logged to diagnose deadlocks or bad performance.

    ◆ Wait()

    static void Wait ( Int  cnt)
    static

    ◆ _mm_pause()

    static void _mm_pause ( )
    staticprivate