diff options
Diffstat (limited to 'opentrack/thread.hpp')
-rw-r--r-- | opentrack/thread.hpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/opentrack/thread.hpp b/opentrack/thread.hpp new file mode 100644 index 00000000..f4e15c4e --- /dev/null +++ b/opentrack/thread.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include <QDebug> + +enum { + CORE_WORK = 1, + CORE_IPC = 0, +}; + +#ifdef _WIN32 +#include <windows.h> + +class Affinity { +public: + Affinity(int core = CORE_WORK) + { + DWORD_PTR ret = SetThreadAffinityMask(GetCurrentThread(), 1 << core); + if (ret == 0) + qDebug() << "SetThreadAffinityMask" << GetLastError(); + last = ret; + } + ~Affinity() + { + if (last) + (void) SetThreadAffinityMask(GetCurrentThread(), last); + } +private: + DWORD_PTR last; +}; + +#else +class Affinity { +public: + Affinity() {} + ~Affinity() {} +} +#endif |