请选择 进入手机版 | 继续访问电脑版
  • 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

多线程【Delphi版】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一.基本注意点

          1.访问公共变量时需要设置临界区

          2.不可直接操作界面,需通过向窗口发送消息来处理

           PS:下面的测试程序中,为简单起见,在线程中直接对主界面进行了操作,实际开发

         项目时是不应该如此操作的。

 

二.主要代码

     公共变量与临界区变量

unit GlobalVar;

interface
uses
  Windows;

var
  userCount:Integer;
  UserInfoRTL:TRTLCriticalSection;

implementation

end.

     线程定义

unit UserInfoManage_Thread;

interface

uses
  Classes, SysUtils, GlobalVar,Windows;

type
    TUserInfoManage_Thread= class(TThread)
    private

    public
      constructor Create(CreateSuspended: Boolean);
      procedure  Execute;override;
      destructor Destroy;override;
  end;

implementation
uses
  Main;
{ TUserInfoManage_Thread }

constructor TUserInfoManage_Thread.Create(CreateSuspended: Boolean);
begin
   inherited Create(CreateSuspended);
end;

destructor TUserInfoManage_Thread.Destroy;
begin

  inherited;
end;

procedure TUserInfoManage_Thread.Execute;
var
  printStr:string;
begin
  inherited;

  EnterCriticalSection(UserInfoRTL);//进入临界区
  try
    userCount:=userCount+1;

    printStr:=''+inttostr(userCount)+'个线程已启动,并进入临界区';
    FrmMain.Memo1.Lines.Add(printStr);

    printStr:='休眠2000毫秒。。。';
    FrmMain.Memo1.Lines.Add(printStr);
    Sleep(2000);

    printStr:=''+inttostr(userCount)+'个线程执行完毕,离开临界区';
    FrmMain.Memo1.Lines.Add(printStr+#13#10);
  finally
    LeaveCriticalSection(UserInfoRTL);//离开临界区
  end;

  Self.FreeOnTerminate:=True;
end;

end.

      主程序初始化“临界区变量”

   userCount:=0;
   InitializeCriticalSection(UserInfoRTL);

      连续启动多个线程

begin
  TUserInfoManage_Thread.Create(False);

  TUserInfoManage_Thread.Create(False);

  TUserInfoManage_Thread.Create(False);
end;

 

 

三.运行结果

   


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab的m文件中调用外部bat文件(转载)发布时间:2022-07-18
下一篇:
同一界面放两个TTIWDBAdvWebGrid的问题(delphiIWTMS)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap