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

WIN32下DELPHI中的多线程【深入VCL源码】(一)

线程的基础知识
      线程的组成。线程有两部分组成。
     1、一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。
     2、另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量。
     进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。因此,如果在单进程环境中,你有两个或多个线程正在运行,那么这两个线程将共享单个地址空间。这些线程能够执行相同的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,因为句柄表依赖于每个进程而不是每个线程存在。
  线程是一种操作系统对象,它表示在进程中代码的一条执行路径。在每一个Wi n32的应用程序中都至少有一个线程,它通常被称为主线程或默认线程。在应用程序中也可以自由地创建别的线程去执行其他任务。线程技术使不同的代码可以同时运行。当然,只有在多C P U的计算机上,多个线程才能够真正地同时运行。在单个CPU上,由于操作系统把C P U的时间分成很短的片段分配给每个线程,这样给人的感觉好像是多个线程真的同时运行,他们只是“看起来”同时在运行。
       Win32是一种抢占式操作系统,操作系统负责管理哪个线程在什么时候执行。如果当线程1暂停执行时,线程2才有机会获得C P U时间,我们说线程1是抢占的。如果某个线程的代码陷入死循环,这并不可怕,操作系统仍会安排时间给其他线程。
      创建一个线程
       注意:每个线程必须拥有一个进入点函数,线程从这个进入点开始运行。线程函数可以使用任何合法的名字。可以给线程函数传递单个参数,参数的含义由你自己定义。线程函数必须由一个返回值,它将成为该线程的退出代码。线程函数应该尽可能的使用函数参数和局部变量。线程函数类似下面的样子(Object Pascal):
//注意最后的stdcall,后面我会描述一些有用的东西
function MyThread(info : Pointer):DWORD; stdcall;
var
  i : integer;
begin
  for i := 0 to Pinfo(info)^.count-1 do
    Form1.Canva


相关文档:

Delphi 中的 Var buffer 开类型参数

以下是在网上收集的一些对无类型参数的说明.个人理解无类型变量就是一个指针.
象Delphi中function   Read(var   Buffer;   Count:   Longint):   Longint;   override;象Buffer这样没有类型的参数究竟应该怎么给参数????  
  这说明Buffer是通过地址方式传递的,一般说来只 ......

delphi编程里的bool跟boolean类型有什么区别

bool是LongBool类型。
Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使用Boolean类型。
这四种类型的布尔值占用内存的数量如下:
Boolean 1 Byte
ByteBool 1 Byte
WordBool 2 Bytes(1 Word)
LongBool 4 Bytes(2 Words)
对 ......

Delphi to Excel 一些方法

一)   使用动态创建的方法   
  
  首先创建   Excel   对象,使用ComObj: 
  var   ExcelApp:   Variant; 
  ExcelApp   :=   CreateOleObject(   'Excel.Application'  ......

CSDN 寻找最后一个Delphi犀利哥

百度知道真垃圾,那么大的一个企业,就给那么点空间,提个问1500字限制了。想想来csdn,挂了一个星期都没人理,不知道是我分太少,还是真的高手都不来这里???期待一个英雄的到来,菜鸟我在这里拜谢了!!其实这根本不是生命难题,我才刚刚学,问不出生命高深的题目来:
rT;
delphi7 ,DB:oracle
问题运行工程文件exe不 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号