Multithreading 100%使用cpu
我需要一个功能,将使用我的cpu 100%。我有一个单核cpu有什么想法吗 线程是否需要设置为高优先级?循环(无限)通常可以很好地完成任务:Multithreading 100%使用cpu,multithreading,delphi,Multithreading,Delphi,我需要一个功能,将使用我的cpu 100%。我有一个单核cpu有什么想法吗 线程是否需要设置为高优先级?循环(无限)通常可以很好地完成任务: while true do begin end; 显然,在不做任何有用的事情的情况下强制CPU达到100%只能用于学术目的,并且只能在您自己的硬件上进行,而不能在您打算发布的任何实际应用程序中进行。例如,通过下一个线程: unit Unit2; interface uses Classes; type TLoadThread = clas
while true do begin
end;
显然,在不做任何有用的事情的情况下强制CPU达到100%只能用于学术目的,并且只能在您自己的硬件上进行,而不能在您打算发布的任何实际应用程序中进行。例如,通过下一个线程:
unit Unit2;
interface
uses
Classes;
type
TLoadThread = class(TThread)
public
class var Stop: Boolean;
protected
procedure Execute; override;
public
constructor Create;
end;
implementation
constructor TLoadThread.Create;
begin
inherited Create;
FreeOnTerminate:= True;
end;
procedure TLoadThread.Execute;
begin
repeat until Stop;
end;
end.
用法示例:
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure LoadCPU;
begin
TLoadThread.Stop:= False;
TLoadThread.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
LoadCPU;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
TLoadThread.Stop:= True;
end;
如果您的CPU有N个内核,请单击
按钮1
N次以达到100%的CPU负载;不需要增加线程优先级。请选择下一票和关闭原因……不是我,但我也很想这么做。。。。在读了第一个答案后,我才明白问题的要点。这听起来像是你想智胜操作系统,从其他人那里窃取cpu周期……请注意,你的建议可能会降低相同优先级的线程的速度,不会影响优先级较高的线程,也不会削弱优先级较低的线程——它们只能通过。操作系统抗饥饿算法,每30秒只提供一次临时优先级提升。将单个CPU盒上的一个CPU循环线程提高到非常高的优先级可能会导致需要“电源开关”重置。此外,如果您希望在重置过程中有一个活动GUI,则需要在单独的(非GUI又名后台工作线程)线程中生成该线程。此外,如果您有多个CPU/内核或超线程,那么您将需要与虚拟CPU相同数量的线程。祝您圣诞快乐。该休息一天了!:-)我一直在做这个循环。。。不经意间。@DavidHeffernan-那你为什么还在这里?坎布里亚所有的酒吧都关门了吗?还是昨晚你被禁酒/宿醉了…:)不终止时更容易操作调用terminate您需要保留对象引用,这在这里很不方便。没有发现FreeOnTerminate。我自己从来没用过。我不想放弃控制权。