Init
This commit is contained in:
53
DependentExtensions/WinPhone8/ThreadEmulation.h
Normal file
53
DependentExtensions/WinPhone8/ThreadEmulation.h
Normal file
@ -0,0 +1,53 @@
|
||||
// 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.
|
||||
//
|
||||
//
|
||||
// Emulates a subset of the Win32 threading API as a layer on top of WinRT threadpools.
|
||||
//
|
||||
// Supported features:
|
||||
//
|
||||
// - CreateThread (returns a standard Win32 handle which can be waited on, then closed)
|
||||
// - CREATE_SUSPENDED and ResumeThread
|
||||
// - Partial support for SetThreadPriority (see below)
|
||||
// - Sleep
|
||||
// - Thread local storage (TlsAlloc, TlsFree, TlsGetValue, TlsSetValue)
|
||||
//
|
||||
// Differences from Win32:
|
||||
//
|
||||
// - If using TLS other than from this CreateThread emulation, call TlsShutdown before thread/task exit
|
||||
// - No ExitThread or TerminateThread (just return from the thread function to exit)
|
||||
// - No SuspendThread, so ResumeThread is only useful in combination with CREATE_SUSPENDED
|
||||
// - SetThreadPriority is only available while a thread is in CREATE_SUSPENDED state
|
||||
// - SetThreadPriority only supports three priority levels (negative, zero, or positive)
|
||||
// - No thread identifier APIs (GetThreadId, GetCurrentThreadId, OpenThread)
|
||||
// - No affinity APIs
|
||||
// - No GetExitCodeThread
|
||||
// - Failure cases return error codes but do not always call SetLastError
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
namespace ThreadEmulation
|
||||
{
|
||||
#ifndef CREATE_SUSPENDED
|
||||
#define CREATE_SUSPENDED 0x00000004
|
||||
#endif
|
||||
|
||||
HANDLE WINAPI CreateThread(_In_opt_ LPSECURITY_ATTRIBUTES unusedThreadAttributes, _In_ SIZE_T unusedStackSize, _In_ LPTHREAD_START_ROUTINE lpStartAddress, _In_opt_ LPVOID lpParameter, _In_ DWORD dwCreationFlags, _Out_opt_ LPDWORD unusedThreadId);
|
||||
DWORD WINAPI ResumeThread(_In_ HANDLE hThread);
|
||||
BOOL WINAPI SetThreadPriority(_In_ HANDLE hThread, _In_ int nPriority);
|
||||
|
||||
VOID WINAPI Sleep(_In_ DWORD dwMilliseconds);
|
||||
|
||||
DWORD WINAPI TlsAlloc();
|
||||
BOOL WINAPI TlsFree(_In_ DWORD dwTlsIndex);
|
||||
LPVOID WINAPI TlsGetValue(_In_ DWORD dwTlsIndex);
|
||||
BOOL WINAPI TlsSetValue(_In_ DWORD dwTlsIndex, _In_opt_ LPVOID lpTlsValue);
|
||||
|
||||
void WINAPI TlsShutdown();
|
||||
}
|
||||
Reference in New Issue
Block a user