setthreadaffinitymask 例子
    setthreadaffinitymask函数用于将线程与特定的处理器核心关联起来。它的主要目的是确保线程在运行时始终在指定的处理器核心上执行,以提高系统性能。
waitforsingleobject函数
    以下是一个使用setthreadaffinitymask函数的示例:
    假设我们有一个多线程程序,其中包含两个线程:线程A和线程B。我们希望线程A始终在处理器核心1上运行,而线程B始终在处理器核心2上运行。
    首先,我们需要获取处理器的相关信息,以确定可用的处理器核心数量。然后,我们可以使用setthreadaffinitymask函数将线程A关联到处理器核心1,并将线程B关联到处理器核心2。
    示例代码如下(使用C++语言):
    #include <windows.h>
    DWORD_PTR WINAPI ThreadA(LPVOID lpParameter)
{
    // 线程A的代码逻辑
    // ...
    return 0;
}
    DWORD_PTR WINAPI ThreadB(LPVOID lpParameter)
{
    // 线程B的代码逻辑
    // ...
    return 0;
}
    int main()
{
    // 获取可用的处理器核心数量
    SYSTEM_INFO systemInfo;
    GetSystemInfo(&systemInfo);
    DWORD_PTR processorMask = (1ULL << systemInfo.dwNumberOfProcessors) - 1;
        // 创建线程A并将其与处理器核心1关联
    HANDLE hThreadA = CreateThread(NULL, 0, ThreadA, NULL, 0, NULL);
    SetThreadAffinityMask(hThreadA, 0x00000001);  // 设置线程A的处理器亲和性掩码为1
        // 创建线程B并将其与处理器核心2关联
    HANDLE hThreadB = CreateThread(NULL, 0, ThreadB, NULL, 0, NULL);
    SetThreadAffinityMask(hThreadB, 0x00000002);  // 设置线程B的处理器亲和性掩码为2
        // 等待线程A和线程B执行完成
    WaitForSingleObject(hThreadA, INFINITE);
    WaitForSingleObject(hThreadB, INFINITE);
        // 关闭线程句柄
    CloseHandle(hThreadA);
    CloseHandle(hThreadB);
        return 0;
}
    这个例子展示了如何使用setthreadaffinitymask函数将线程与特定的处理器核心关联起来。请注意,在实际使用过程中,需要根据系统的实际情况来确定要使用哪些处理器核心,并根据需求进行设置。