Подтвердить что ты не робот

Является ли плохая практика ставить бесконечный цикл внутри TThread.Execute?

Я написал класс Thread.descendent и в методе execute я поставил бесконечный цикл для прослушивания события com, считается плохой практикой Threading, используя бесконечный цикл для этого? приложения работают нормально, не замораживаются и всегда реагируют, я просто отвечаю, потому что я хочу использовать лучший метод для потоковой передачи.

procedure TMyThread.Execute;
begin
    while True and not Terminated do
    begin
     AResult:= FListener.GetResult(Param1,Param2,5000);
      if not VarIsNull(AResult) then
        Synchronize(Process);
    end;
end;
4b9b3361

Ответ 1

Это нормально. Вы проверяете Terminated, что хорошо. Если ваш слушатель позволяет это и ваше использование процессора слишком велико, вы можете замедлить поток, поставив там Sleep (1), но я думаю, что это не понадобится.

Ответ 2

Компилятор преобразует это в:

while not Terminated do

При написании этого пути я уверен, что вы согласитесь, что это выглядит совершенно естественно. Это очень распространенная идиома.