Multithreading 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

我需要一个功能,将使用我的cpu 100%。我有一个单核cpu有什么想法吗

线程是否需要设置为高优先级?

循环(无限)通常可以很好地完成任务:

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。我自己从来没用过。我不想放弃控制权。