C++ 多线程会挤出其他进程
我已经在我正在编写的光线跟踪器中添加了多线程,虽然它现在确实运行得更快,但当它运行时,我的计算机几乎慢得无法用了。显然,我想使用我的电脑的所有计算能力,但我不希望它阻止任何其他应用程序访问CPU 我考虑让线程睡眠,但除非它们都同时睡眠,否则其他线程只会占用额外的时间。另外,如果我不打算使用它,我不一定要放弃一定百分比的可用计算能力C++ 多线程会挤出其他进程,c++,multithreading,C++,Multithreading,我已经在我正在编写的光线跟踪器中添加了多线程,虽然它现在确实运行得更快,但当它运行时,我的计算机几乎慢得无法用了。显然,我想使用我的电脑的所有计算能力,但我不希望它阻止任何其他应用程序访问CPU 我考虑让线程睡眠,但除非它们都同时睡眠,否则其他线程只会占用额外的时间。另外,如果我不打算使用它,我不一定要放弃一定百分比的可用计算能力 另外,(这不是我的正式问题)我注意到,出于某种原因,第一个线程比第二个线程做的工作多,第二个线程比第三个线程做的工作多,依此类推,直到最后5个线程(32个线程中的最后
另外,(这不是我的正式问题)我注意到,出于某种原因,第一个线程比第二个线程做的工作多,第二个线程比第三个线程做的工作多,依此类推,直到最后5个线程(32个线程中的最后5个线程)在任何工作中都不会出现裂缝,尽管事实上还有很多线程需要处理(至少有50万个工作项需要他们仔细考虑)。如果有人想在评论中大胆猜测,我们将不胜感激。根据要求,我的评论作为回答: 听起来你的CPU太差了。试着减少线程数
如果线程数量明显多于硬件核心,那么在线程之间切换、在操作系统中调度线程以及在共享变量上的争用都将浪费大量时间。这还将导致其他正在运行的程序的总体速度减慢,因为它们必须与程序中的大量线程竞争(默认情况下,在操作系统调度程序眼中,所有程序的线程都具有与其他程序线程相同的优先级)。根据要求,我的评论作为回答: 听起来你的CPU太差了。试着减少线程数
如果线程数量明显多于硬件核心,那么在线程之间切换、在操作系统中调度线程以及在共享变量上的争用都将浪费大量时间。这还将导致其他正在运行的程序的总体速度减慢,因为它们必须与程序中的大量线程竞争(默认情况下,在操作系统调度程序眼中,所有程序的线程都具有与其他程序线程相同的优先级)。根据要求,我的评论作为回答: 听起来你的CPU太差了。试着减少线程数
如果线程数量明显多于硬件核心,那么在线程之间切换、在操作系统中调度线程以及在共享变量上的争用都将浪费大量时间。这还将导致其他正在运行的程序的总体速度减慢,因为它们必须与程序中的大量线程竞争(默认情况下,在操作系统调度程序眼中,所有程序的线程都具有与其他程序线程相同的优先级)。根据要求,我的评论作为回答: 听起来你的CPU太差了。试着减少线程数
如果线程数量明显多于硬件核心,那么在线程之间切换、在操作系统中调度线程以及在共享变量上的争用都将浪费大量时间。这还将导致其他正在运行的程序的总体速度减慢,因为它们必须与程序中的大量线程竞争(默认情况下,在操作系统调度程序眼中,所有程序的线程都具有与其他程序线程相同的优先级)。如果使用标准线程,可以尝试使用找出硬件真正支持的最大线程数的估计值,以避免cpu过载 如果它返回0,则信息不可用。在其他情况下,您可以将自己限制在这个数字或稍低一点(考虑到其他进程也可能使用这些数字)
如果限制线程的数量不能提高响应性,您也可以考虑不时调用以提供重新安排线程的机会。但是,根据使用的作业和同步,第二种选择可能会降低性能。
< P>如果使用标准线程,可以尝试使用<强> 了解硬件真正支持的最大线程数的估计值,以避免cpu过载 如果它返回0,则信息不可用。在其他情况下,您可以将自己限制在这个数字或稍低一点(考虑到其他进程也可能使用这些数字)如果限制线程的数量不能提高响应性,您也可以考虑不时调用以提供重新安排线程的机会。但是,根据使用的作业和同步,第二种选择可能会降低性能。
< P>如果使用标准线程,可以尝试使用<强> 了解硬件真正支持的最大线程数的估计值,以避免cpu过载 如果它返回0,则信息不可用。在其他情况下,您可以将自己限制在这个数字或稍低一点(考虑到其他进程也可能使用这些数字)如果限制线程的数量不能提高响应性,您也可以考虑不时调用以提供重新安排线程的机会。但是,根据使用的作业和同步,第二种选择可能会降低性能。
< P>如果使用标准线程,可以尝试使用<强> 了解硬件真正支持的最大线程数的估计值,以避免cpu过载 如果它返回0,则信息不可用。在其他情况下,您可以将自己限制在这个数字或稍低一点(考虑到其他进程也可能使用这些数字) 如果限制线程数不能提高响应速度,则y