Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++ 多线程会挤出其他进程_C++_Multithreading - Fatal编程技术网

C++ 多线程会挤出其他进程

C++ 多线程会挤出其他进程,c++,multithreading,C++,Multithreading,我已经在我正在编写的光线跟踪器中添加了多线程,虽然它现在确实运行得更快,但当它运行时,我的计算机几乎慢得无法用了。显然,我想使用我的电脑的所有计算能力,但我不希望它阻止任何其他应用程序访问CPU 我考虑让线程睡眠,但除非它们都同时睡眠,否则其他线程只会占用额外的时间。另外,如果我不打算使用它,我不一定要放弃一定百分比的可用计算能力 另外,(这不是我的正式问题)我注意到,出于某种原因,第一个线程比第二个线程做的工作多,第二个线程比第三个线程做的工作多,依此类推,直到最后5个线程(32个线程中的最后

我已经在我正在编写的光线跟踪器中添加了多线程,虽然它现在确实运行得更快,但当它运行时,我的计算机几乎慢得无法用了。显然,我想使用我的电脑的所有计算能力,但我不希望它阻止任何其他应用程序访问CPU

我考虑让线程睡眠,但除非它们都同时睡眠,否则其他线程只会占用额外的时间。另外,如果我不打算使用它,我不一定要放弃一定百分比的可用计算能力


另外,(这不是我的正式问题)我注意到,出于某种原因,第一个线程比第二个线程做的工作多,第二个线程比第三个线程做的工作多,依此类推,直到最后5个线程(32个线程中的最后5个线程)在任何工作中都不会出现裂缝,尽管事实上还有很多线程需要处理(至少有50万个工作项需要他们仔细考虑)。如果有人想在评论中大胆猜测,我们将不胜感激。

根据要求,我的评论作为回答:

听起来你的CPU太差了。试着减少线程数


如果线程数量明显多于硬件核心,那么在线程之间切换、在操作系统中调度线程以及在共享变量上的争用都将浪费大量时间。这还将导致其他正在运行的程序的总体速度减慢,因为它们必须与程序中的大量线程竞争(默认情况下,在操作系统调度程序眼中,所有程序的线程都具有与其他程序线程相同的优先级)。

根据要求,我的评论作为回答:

听起来你的CPU太差了。试着减少线程数


如果线程数量明显多于硬件核心,那么在线程之间切换、在操作系统中调度线程以及在共享变量上的争用都将浪费大量时间。这还将导致其他正在运行的程序的总体速度减慢,因为它们必须与程序中的大量线程竞争(默认情况下,在操作系统调度程序眼中,所有程序的线程都具有与其他程序线程相同的优先级)。

根据要求,我的评论作为回答:

听起来你的CPU太差了。试着减少线程数


如果线程数量明显多于硬件核心,那么在线程之间切换、在操作系统中调度线程以及在共享变量上的争用都将浪费大量时间。这还将导致其他正在运行的程序的总体速度减慢,因为它们必须与程序中的大量线程竞争(默认情况下,在操作系统调度程序眼中,所有程序的线程都具有与其他程序线程相同的优先级)。

根据要求,我的评论作为回答:

听起来你的CPU太差了。试着减少线程数


如果线程数量明显多于硬件核心,那么在线程之间切换、在操作系统中调度线程以及在共享变量上的争用都将浪费大量时间。这还将导致其他正在运行的程序的总体速度减慢,因为它们必须与程序中的大量线程竞争(默认情况下,在操作系统调度程序眼中,所有程序的线程都具有与其他程序线程相同的优先级)。

如果使用标准线程,可以尝试使用找出硬件真正支持的最大线程数的估计值,以避免cpu过载

如果它返回0,则信息不可用。在其他情况下,您可以将自己限制在这个数字或稍低一点(考虑到其他进程也可能使用这些数字)


如果限制线程的数量不能提高响应性,您也可以考虑不时调用以提供重新安排线程的机会。但是,根据使用的作业和同步,第二种选择可能会降低性能。

< P>如果使用标准线程,可以尝试使用<强> 了解硬件真正支持的最大线程数的估计值,以避免cpu过载

如果它返回0,则信息不可用。在其他情况下,您可以将自己限制在这个数字或稍低一点(考虑到其他进程也可能使用这些数字)


如果限制线程的数量不能提高响应性,您也可以考虑不时调用以提供重新安排线程的机会。但是,根据使用的作业和同步,第二种选择可能会降低性能。

< P>如果使用标准线程,可以尝试使用<强> 了解硬件真正支持的最大线程数的估计值,以避免cpu过载

如果它返回0,则信息不可用。在其他情况下,您可以将自己限制在这个数字或稍低一点(考虑到其他进程也可能使用这些数字)


如果限制线程的数量不能提高响应性,您也可以考虑不时调用以提供重新安排线程的机会。但是,根据使用的作业和同步,第二种选择可能会降低性能。

< P>如果使用标准线程,可以尝试使用<强> 了解硬件真正支持的最大线程数的估计值,以避免cpu过载

如果它返回0,则信息不可用。在其他情况下,您可以将自己限制在这个数字或稍低一点(考虑到其他进程也可能使用这些数字)

如果限制线程数不能提高响应速度,则y