收录日期:2019/05/24 23:34:24 时间:2016/05/31 07:15:31 标签:语言基础/算法/系统设计
procedure TTest.execute;
var
i:integer;
begin
    FreeOnTerminate:=true;
    enterCriticalSection(CS);
     for i:=1 to maxsize do
            begin
               inc(incnum);
               TT[i]:=incnum;
               sleep(5);   //这一句是否每循环一次就睡眠五秒,并且不执行下一个线程
            end;

end;
procedure Tform1.T1done(sender:Tobject);
var
i:Integer;
begin
   listbox1.Items.Clear;
        for i:=1 to maxsize do
              begin
                 listbox1.Items.Add(inttostr(TT[i]));
               end;
    leavecriticalsection(cs);
end;
procedure Tform1.T2done(sender:Tobject);
var
i:integer;
begin
       listbox2.Items.Clear;
       for i:=1 to maxsize do
             listbox2.Items.Add(inttostr(TT[i]));
  leavecriticalsection(cs);

end;
procedure TForm1.Button1Click(Sender: TObject);//执行线程
begin
  initializeCriticalSection(CS);
  T1:=TTest.Create(false);
  T1.OnTerminate:=T1done;
  T2:=TTest.Create(false);
  T2.OnTerminate:=T2done;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
deletecriticalsection(cs);
end;
我在实际应用中真没用过多线程,仅在一些练习中写着玩。


但就我所知,sleep API会令总个进程挂起,而不是让使用它的线程挂起。
for i:=1 to maxsize do
            begin
               inc(incnum);
               TT[i]:=incnum;
               sleep(5);   //这一句是否每循环一次就睡眠五秒,并且不执行下一个线程
            end;
但就我所知,sleep API会令总个进程挂起,而不是让使用它的线程挂起。

//  不是令整个进程挂起的 只是使自己暂时睡眠5ms 不是5秒!是 5ms...表示自己在这5MS中 不去睁抢CPU。。。。

sleep(5);   //这一句是否每循环一次就睡眠五秒,并且不执行下一个线程
// 是 5MS 5毫秒 不是不执行下一个线程 而是不执行下一次循环。。。是本线程的执行代码挂起5MS。。
procedure TForm1.Button1Click(Sender: TObject);//执行线程
begin
  initializeCriticalSection(CS);
  T1:=TTest.Create(false);
  T1.OnTerminate:=T1done;
  T2:=TTest.Create(false);
  T2.OnTerminate:=T2done;
end;
我这里有二个线程,并使用了临界区。T1的execute中执行了sleep挂起后,是否是挂起5MS后再执行
线程T2了.
而我这个sleep又在循环中,是否每次都执行sleep挂起了
sleep会放出CPU给其他线程运行

请教高手:如何关闭一个窗口或隐藏一个窗口?我是新手,我只知在工程-->设置了autocreate,那一运行就出现一个登录窗口,输入密码正确我就show主窗口,但登录窗口就关不掉了! 300分征求通讯中的主站和子站之间的遥控源代码!!!!!!!!!!!!! 想问问MSChart怎么和数据库联系起来用? 有关Tomcat中Session的问题? com自动化编程问题 初学者的菜鸟问题!请教! 如何在DirectX模式下捕捉屏幕?How to capture screen with DirectX ? 中文路径的问题 IIS的绑定工作怎么做?请详细一点好吗? 300分征求通讯中的主站和子站之间的遥控源代码!(急) 300分征求通讯中的主站和子站之间的遥控源代码!(加急) 300分征求通讯中的主站和子站之间的遥控源代码!(加急)!!!!!!1 怎么可以知道目录占有磁盘空间的大小 有关Tomcat中Session的问题! 控制,控制 如何用程序自己发收UDP包? com自动化编程 初学者:用VC写COM需要知道那些东西?与普通的dll有何不同,ATL COM 是啥??? 小妹请教了!!!!! 请问在vb中怎样把键盘设置成无效,运行程序按键对win没有任何反应 问题1: 怎样在delphi 中设置windows任务栏为自动隐藏? 关于C/C++里的类型转换,困惑我许久的问题... 问题2:我用delphi中的tquery打开网上邻居中的数据时的问题 如果用程序生成某应用程序的快捷方式 怎么得到专家分? c#的编译环境! ZDG快来看BUG!老BUG又出来啦!!! 有没有一种软件能够将人物的像片变成漫画或其他比较滑稽的样子 大侠赐教:关于DELPHI中的几个问题。 为什么我在调试环境中总是看不到ClientDataSet的CommandText的值??