zoukankan      html  css  js  c++  java
  • 线程【六】线程安全退出

    问题1:

    一般来说,要让你的线程能够尽快终止,必须在Execute方法中在较短的时间内不断地检查Terminated标志,以便能及时地退出。这是设计线程代码的一个很重要的原则!

    在这种情况下使用上述思路一般不会出什么问题!

    type
      TThread1 = class(TThread)
      private
        procedure Test();
      protected
        procedure Execute; override;
      end;
    
    procedure TThread1.Execute;
    var
      i:Integer;
    begin
      FreeOnTerminate := True;//线程正常结束后自动释放线程资源
      For i:=0 to 1000 do
      begin
        if Terminated then break;//线程非正常结束时,遇到标识马上退出!
        Test()//线程内的业务处理函数
      end;
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      if Assigned(t1) then t1.Terminate;//在窗体关闭时做关闭标识
    end;
    View Code
  • 相关阅读:
    4. 归并排序
    3. 堆排序
    2. 希尔排序
    1. 选择排序、插入排序、冒泡排序
    1. 拓扑排序
    8. 最大堆
    7. B+树
    6. B树
    5. 二叉查找树、平衡二叉树、红黑树的效率比较
    4. 红黑二叉树
  • 原文地址:https://www.cnblogs.com/key-ok/p/3358968.html
Copyright © 2011-2022 走看看