#include <cpuyield.h>
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 |
|
explicit |
[in] | res | The contended resource because of which Pause might have to be called. Might be a nullptr (but shouldn't). |
~CpuYield | ( | ) |
void Reset | ( | void | ) |
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.
|
static |
|
staticprivate |