Delphi线程_TThread代码分析
Delphi中的线程类
Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是
对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并
不是多线程编程的全部,此文的目的在于对此作一个补充。
线程本质上是进程中一段并发运行的代码。一个进程至少有一个线程,即所谓的主线程。同时还可以有多个子线程。
当一个进程中用到超过一个线程时,就是所谓的“多线程”。
那么这个所谓的“一段代码”是如何定义的呢?其实就是一个函数或过程(对Delphi而言)。
如果用Windows API来创建线程的话,是通过一个叫做CreateThread的API函数来实现的,它的定义为:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
其各参数如它们的名称所说,分别是:线程属性(用于在NT下进行线程的安全属性设置,在9X下无效),堆栈大小,
起始地址,参数,创建标志(用于设置线程创建时的状态),线程ID,最后返回线程Handle。其中的起始地址就是线
程函数的入口,直至线程函数结束,线程也就结束了。
因为CreateThread参数很多,而且是Windows的API,所以在C Runtime Library里提供了一个通用的线程函数(理论上
可以在任何支持线程的OS中使用):
unsigned long _beginthread(void (_USERENTRY *__start)(void *), unsigned __stksize, void *__arg);
Delphi也提供了一个相同功能的类似函数:
function BeginThread(
SecurityAttributes: Pointer;
StackSize: LongWord;
ThreadFunc: TThreadFunc;
相关文档:
Ctrl+PageUp 将光标移至本屏的第一行,屏幕不滚动。
Ctrl+PageDown 将光标移至本屏的最后一行,屏幕不滚动。
Ctrl+↓ 向下滚动屏幕,光标跟随滚动不出本屏。
Ctrl+↑ &nb ......
unit unitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2 ......
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2420610
目录
===============================================================================
⊙
RTTI 简介
⊙ 类(class) 和 VMT 的关系
⊙ 类(class)、类的类(class of class)、类变量(class
variable) 的关系
⊙ TObject.ClassType 和 TObject.ClassInf ......
最近做一个项目,要用Delphi,以前从未学过,好是费劲啊,哈哈光是字符串切割这个问题就困扰了几个小时,通过查资料终于解决,在这与大家分享一下
Function split(src: pchar; ch: char):TStringList;
// 分割字符串
var
i: Integer;
tmp : string;
begin
Result:=TStringList.Create;
......
1、准备
GPS(Global Positioning System),即全球定位系统,利用24颗GPS卫星的测距和测时功能进行全球定位,在许多系统中,如机场导航系统,出租车辆管理和调度系统、江河流域的灾害信息管理和预测系统中,GPS得到了广泛的应用。本文利用MSCOMM控件实现了GPS数据的采集,可为信息管理和指挥调度等提供定位数据。
......