Files
2025-09-18 17:55:52 -04:00

66 lines
1.3 KiB
C++

//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
//// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
//// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//// PARTICULAR PURPOSE.
////
//// Copyright (c) Microsoft Corporation. All rights reserved
#pragma once
#include "Clock.h"
#if TV_API
namespace Microsoft {
namespace Xbox {
namespace GameChat {
delegate void ThreadDoWorkHandler();
ref class Thread sealed
{
public:
Thread(
_In_ UINT sendPeriodInMilliseconds,
_In_ int32 threadAffinityMask,
_In_ int threadPriority
);
virtual ~Thread();
void Shutdown();
UINT GetWorkPeriodInMilliseconds();
void SetWorkPeriodInMilliseconds(
_In_ UINT sendPeriodInMilliseconds
);
void SetOptions(
_In_ int32 threadAffinityMask,
_In_ int threadPriority
);
void WakeupThread();
event ThreadDoWorkHandler^ OnDoWork;
private:
static DWORD WINAPI StaticThreadProc(
_In_ Thread^ networkSendThread
);
DWORD ThreadProc();
private:
CRITICAL_SECTION m_threadManagementLock;
Clock m_clock;
HANDLE m_terminateThreadEvent;
HANDLE m_threadHandle;
HANDLE m_wakeupEventHandle;
UINT m_workPeriodInMilliseconds;
int m_threadPriority;
uint32 m_threadAffinityMask;
};
}}}
#endif