易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi多线程学习(4):临界区

 临界区是一段代码,一次只允许一个线程执行这段代码。当把一段代码放入一个临界区, 线程执行到临界区时就独占了, 其他线程如果要访问这段代码,一定要等前一个访问的线程结束才行。借用前面的比喻比作图书馆,临界区就像把图书馆设计成只有一个位置(现实中好像不太合理,不管了,反正这么个意思),当有一个人正在办理业务时,其他人只能等待那个人办完业务才能进去。
    使用临界区的步骤:
    1、声明一个TRLCriticalSection记录类型的变量如CS,必须是全局的;
    2、使用前先初始化:InitializeCriticalSection(CS);
    3、EnterCriticalSection(CS);  线程进入临界区,其他线程需要等待
    4、LeaveCriticalSection(CS);  线程离开临界区,其他线程可以访问了
    5、DeleteCriticalSection(CS); 最后删除临界区
重写前文的例子,如下:
{主窗体代码}
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;
CS:TRTLCriticalSection; //全局临界区变量
implementation

uses MyThread;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
TMyThread.Create(False);
TMyThread.Create(False);
TMyThread.Create(False);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
InitializeCriticalSection(CS); //初始化
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
DeleteCriticalSection(CS); //删除
end;

end.{线程类}
unit MyThread;

interface

uses
Classes,StdCtrls,SysUtils,Windows;

type
TMyThread = class(TThread)
private
{ Private declarations }
str:String;
procedure AddList;
protected
procedure Execute


相关文档:

Delphi 自己写个Timer玩玩

技术交流,DH讲解.
明天去坐火车,回家,今天就没有事做,本来在弄一个跨进程获取其他程序里面组件,如ListView,ListBox,Button等的信息,突然有个想法自己写个Timer,不用SetTimer函数,我们自己用个多线程也正好实现这个.反正前段时间多线程也弄得比较多,本来想单独讲讲的,现在就用个例子来说明吧.
写成一个控件:utTimer.pas
v ......

关于delphi Move函数的用法详解

使用delphi多年,前些天忽然遇到不会string转pbyte,很是失落,此时对于编程基本功的重要性深有体会.这其中用到MOVE函数.
使用delphi多年,前些天忽然遇到不会string转pbyte,很是失落,此时对于编程基本功的重要性深有体会.这其中用到MOVE函数.
 搞了好一会才搞明白其用法.所以想贴出来帮助需要帮助的人.
var
 &nb ......

delphi指针简单入门:


    
 指针用法的例子:  
  1         var  
  2             X,   Y:   Integer;       //   X   and   Y   整数类型  
  3       &n ......

在Delphi中,字符串查找 函数

Delphi提供的字符串函数里有一个Pos函数,它的定义是:
function Pos(Substr: string; S: string): Integer;
它的作用是在字符串S中查找字符串Substr,返回值是Substr在S中第一次出现的位置,如果没有找到,返回值为0。
使用pos函数来查找字符第一次出现的位置
var
str1:string;
i,j:integer;
begin
str1:='dsf465 ......

Delphi多线程学习(2):Delphi中的多线程类TThread。

2010-02-22 17:08:46
Delphi把多线程相关的API封装在TThread这个类中,可以方便实现多线程运用。首先看下TThread的声明:
TThread = class

private
FHandle: THandle;
FThreadID: THandle;
FCreateSuspended: Boolean;
FTerminated: Boolean;
FSuspended: Boolean;
FFreeOnTerminate: ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号