TTest是TThread的派生类,写成如下这样是不是表示运行两个线程.
begin
TTest.Create(false);
TTest.Create(false);
end

解决方案 »

  1.   

    没错,你这样实际上已经创建了两个TTest的实例。
      

  2.   

    在execute方法中如果不加sleep,如果是本来是有规则的数,它就变成了无规则的数了。哪么怎样控制
    sleep(misecond)的时间参数,热情的期待高手.真的可用分0000,祝你家身体健康
      

  3.   

    对不起,怎么用sleep()过程中的时间参数了
      

  4.   

    就那样用就可以了啊 sleep(100)1000 就是一秒了
      

  5.   

    Sleep(n); // n毫秒。。Sleep(0) 表示如果存在请求CPU控制权的线程,就将控制权交出 否则继续为自己占有。。
    Sleep(n) 表示这n毫秒内 自己休眠,不需要争取CPU的控制权。。execute:不用Sleep的话 就在自己被分配的时间片里一直执行 当然里面也可能被其他的线程所抢了 所以可能会出现不规则的数 其实就算你用了Sleep也有可能出现不规则的数的
      

  6.   

    如果在execute 中不加sleep则TTest.Create(false);这个线程获得控制权会一直执行下去后再去执行下一个线程,是吗某个线程是否获得控制权是靠OS调度的 当然如果你Sleep(n) n>0的话 系统是绝不会分配你控制权的。
    即使你不sleep OS也可能中断你的执行 把控制权交给其他线程<有可能是优先级更高的 或者相等的 设置是更低的..> 也就是说 
    多线程里面 程序的流程不一定就是按照你想要的走 所以就需要编写线程安全的代码。。
      

  7.   

    也就是说我加了与没加sleep,我下面创建的二个线程有可能都在运行是吧
    procedure TForm1.Button1Click(Sender: TObject);
    beginTTest.Create(false);
    TTest.Create(false);end;
      

  8.   

    也就是说我加了与没加sleep,我下面创建的二个线程有可能都在运行是吧对头!!!你不是看到了那些不规则的数么 就是因为执行顺序比较乱导致的