Q&A

  • 쓰레드에서 무한 루프를 돌면 ....
그냥 단순하게 델파이 쓰레드 유닐을 이용해서
무한 루프를 돌렀는데..
CPU가 100% 나옵니다.

이것이 제대루 돌아 가느건지 쩝 답변좀 부탁드립니다

쓰레드 생성 부분
var
  CheckLas :  TestThread;

procedure TForm1.Button1Click(Sender: TObject);
begin
    CheckLas := TestThread.Create(True);
    CheckLas.FreeOnTerminate := True;
    CheckLas.Suspended := False;
    CheckLas.Priority := tpIdle;
    CheckLas.Resume;
end;

쓰레드 유니
unit Unit2;

interface

uses
  Classes;

type
  TestThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

implementation


procedure TestThread.Execute;
begin
  while True do begin
  end;
end;

end.
2  COMMENTS
  • Profile
    구창민 2003.01.07 18:42
    for 문은 쓰레드가 아니라 쓰레드 할애비가 와도

    점유하게 되지여.

    쓰레드 내에선 일반적으로 SleepEx(milisec, True);

    를 포함해서 한 프로세서가 장악하지 않게 합니다.

    특정 프로세서가 CPU 를 점유하는것은

    훌륭한 OS 탓입니다.

    즐거운 프로그래밍 하시길~~


  • Profile
    최용일 2003.01.06 22:53
    안녕하세요. 최용일입니다.

    그냥 무한루프를 돌게 하면 아무리 Priority가 tpIdle이라고 할지라도 CPU를 혼자서 독점하게 됩니다... 무한루프안에서 다른 넘들도 일을 할 수 있도록 처리해주세요...

    uses
        ......, Forms;

    procedure TTestThread.Execute;
    begin
        while True do
        begin
            Application.HandleMessage;
        end;
    end;

    ^^ 항상 즐코하세요...