Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 哪些线程是CPU绑定的_C++_Multithreading - Fatal编程技术网

C++ 哪些线程是CPU绑定的

C++ 哪些线程是CPU绑定的,c++,multithreading,C++,Multithreading,我听说线程的最佳数量取决于它们是否受CPU限制。但这到底意味着什么 假设我的线程大部分时间将通过WinAPI中的sleep函数睡眠。我是否应该将此类线程视为非CPU绑定线程,并将其数量增加到CPU核心数之上?如果线程大部分时间都在使用某个资源,则该线程会被该资源绑定,因此其速度受该资源速度的限制 根据上面的定义,如果一个线程使用最多的资源是CPU的计算能力,那么该线程是CPU受限的,也就是说,它是一个执行大量计算的线程。如果这些内核的数量超过可用内核的数量,那么您将一无所获,因为它们将争夺CPU

我听说线程的最佳数量取决于它们是否受CPU限制。但这到底意味着什么


假设我的线程大部分时间将通过WinAPI中的
sleep
函数睡眠。我是否应该将此类线程视为非CPU绑定线程,并将其数量增加到CPU核心数之上?

如果线程大部分时间都在使用某个资源,则该线程会被该资源绑定,因此其速度受该资源速度的限制

根据上面的定义,如果一个线程使用最多的资源是CPU的计算能力,那么该线程是CPU受限的,也就是说,它是一个执行大量计算的线程。如果这些内核的数量超过可用内核的数量,那么您将一无所获,因为它们将争夺CPU时间

当线程被其他资源(最常见的是文件)绑定时,您可以(相反)放置比可用内核更多的线程,因为它们将花费大部分时间等待这些资源准备就绪,从而使CPU可用于其他线程

一个睡眠时间最多的线程不太占用CPU,因此它不受CPU的限制


编辑:非CPU绑定线程的示例包括读取文件、等待网络连接、与PCI连接设备对话、花费大部分时间等待条件变量的线程和等待用户输入的GUI线程。

如果线程花费大部分时间使用某个资源,则该线程会被该资源绑定,因此,它的速度受到资源速度的限制

根据上面的定义,如果一个线程使用最多的资源是CPU的计算能力,那么该线程是CPU受限的,也就是说,它是一个执行大量计算的线程。如果这些内核的数量超过可用内核的数量,那么您将一无所获,因为它们将争夺CPU时间

当线程被其他资源(最常见的是文件)绑定时,您可以(相反)放置比可用内核更多的线程,因为它们将花费大部分时间等待这些资源准备就绪,从而使CPU可用于其他线程

一个睡眠时间最多的线程不太占用CPU,因此它不受CPU的限制


编辑:非CPU绑定线程的示例包括读取文件、等待网络连接、与PCI连接设备对话、花费大部分时间等待条件变量的线程和等待用户输入的GUI线程。

为什么您的线程主要是
睡眠
线程?但是是的,这些线程肯定不是CPU绑定的。@Gregor McGregor,但大多数指令都取决于它们的内存operating@GregorMcGregor啊,在非CPU限制的指令中,我们依赖于寄存器外的内存和快速缓存,如文件、网络设备等?这取决于“最优”的含义。“最优”是否等同于“所有CPU始终100%忙碌”?还是“每个线程都能在最短的挂钟时间内完成任务”?任何一个都可以被认为是最优的,只是根据不同的指标——最优地使用昂贵的CPU资源以获得最大的投资回报,而不是实现处理目标的最佳进度……搜索web如何?例如,它提供了一个答案。为什么你的线程主要是
Sleep
ing?但是是的,这些线程肯定不是CPU绑定的。@Gregor McGregor,但大多数指令都取决于它们的内存operating@GregorMcGregor啊,在非CPU限制的指令中,我们依赖于寄存器外的内存和快速缓存,如文件、网络设备等?这取决于“最优”的含义。“最优”是否等同于“所有CPU始终100%忙碌”?还是“每个线程都能在最短的挂钟时间内完成任务”?任何一个都可以被认为是最优的,只是根据不同的指标——最优地使用昂贵的CPU资源以获得最大的投资回报,而不是实现处理目标的最佳进度……搜索web如何?例如,确实提供了答案。谢谢您的回答。我能再举一个非CPU限制的例子吗?也许是网络运营?谢谢你的回答。我能再举一个非CPU限制的例子吗?也许是网络运营?