C++ 将1个cpu内核分配给1个线程c++;

C++ 将1个cpu内核分配给1个线程c++;,c++,windows,multithreading,C++,Windows,Multithreading,我有一个创建3个线程的进程。我想将1个线程分配给1个cpu核心(cpu有8个物理核心),这些核心只运行我的线程。因为我想确保我的计算线程总是以最高优先级运行 例如:线程1被分配给核心1,而核心1只是运行线程1。核心0,2,3,4,5,6,7可以自由地从其他进程运行其他线程 有图书馆支持这个吗?或者有人知道如何做到这一点吗?这通常被称为处理器或线程关联,您可能会在平台级别掌握这一点 在windows上,您可以使用该函数。这通常称为处理器或线程关联,您可能在平台级别拥有该函数的句柄 在windows

我有一个创建3个线程的进程。我想将1个线程分配给1个cpu核心(cpu有8个物理核心),这些核心只运行我的线程。因为我想确保我的计算线程总是以最高优先级运行

例如:线程1被分配给核心1,而核心1只是运行线程1。核心0,2,3,4,5,6,7可以自由地从其他进程运行其他线程


有图书馆支持这个吗?或者有人知道如何做到这一点吗?

这通常被称为处理器或线程关联,您可能会在平台级别掌握这一点


在windows上,您可以使用该函数。

这通常称为处理器或线程关联,您可能在平台级别拥有该函数的句柄



在windows上,您可以使用该函数。

在Linux上,您有sched_setaffinity和sched_getaffinity

在Linux上有sched_setaffinity和sched_getaffinity

除了SetThreadAffinityMask之外,还有一个SetThreadIdealProcessor,如果您在哪个内核上运行它时做出错误的决定(即,几个需要cpu的应用程序锁定在同一个内核上),它会更宽容一些。

除了SetThreadAffinityMask,还有一个SetThreadIdealProcessor,如果您在哪个内核上运行它时做出错误的决定(即,几个需要cpu的应用程序锁定在同一个内核上),它会更宽容一些。

您使用什么操作系统?在linux中,请参阅手册页的
sched_setaffinity
。谢谢gudok,我使用的是windows 7。为什么要这样做?顺便说一句,你应该编辑你的问题,首先用Windows标记它,然后给出动机。不要在评论中回答,而是通过编辑你的问题。你使用什么操作系统?在linux中,请参阅手册页的
sched_setaffinity
。谢谢gudok,我使用的是windows 7。为什么要这样做?顺便说一句,你应该编辑你的问题,首先用Windows标记它,然后给出动机。不要在评论中回答,而是通过编辑你的问题。我想要的正是在分配之后,cpu核心只运行我的线程。SetThreadAffinityMask有帮助吗?这取决于您的意思,如果您的意思是,您的线程是整个系统中唯一一个操作系统将调度在该内核上的线程,那么不,我认为这是不可能的,其他进程也将调度在该内核上。但是,如果您将其他线程分配给其他内核,它们将永远不会在其上运行。您可以为系统上运行的每个进程设置SetThreadAffinityMask以排除一个内核来实现此目的。至少在理论上是这样。如果你想让你的线程比其他应用运行得更多,最好使用线程和进程优先级。阅读有关SetThreadPriority和SetPriorityClass的内容。对windows调度程序有很好的了解:我想要的正是在分配之后,cpu核心只运行我的线程。SetThreadAffinityMask有帮助吗?这取决于您的意思,如果您的意思是,您的线程是整个系统中唯一一个操作系统将调度在该内核上的线程,那么不,我认为这是不可能的,其他进程也将调度在该内核上。但是,如果您将其他线程分配给其他内核,它们将永远不会在其上运行。您可以为系统上运行的每个进程设置SetThreadAffinityMask以排除一个内核来实现此目的。至少在理论上是这样。如果你想让你的线程比其他应用运行得更多,最好使用线程和进程优先级。阅读有关SetThreadPriority和SetPriorityClass的信息。有关windows计划程序的详细信息: