Delphi中的线程类--之(2)[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 raptor 的 blog

在通过inherited调用tobject.create后,第一句就是调用一个过程:addthread,其源码如下:

procedure addthread;

begin

  interlockedincrement(threadcount);

end;

同样有一个对应的removethread

procedure removethread;

begin

  interlockeddecrement(threadcount);

end;

它们的功能很简单,就是通过增减一个全局变量来统计进程中的线程数。只是这里用于增减变量的并不是常用的inc/dec过程,而是用了interlockedincrement/interlockeddecrement这一对过程,它们实现的功能完全一样,都是对变量加一或减一。但它们有一个最大的区别,那就是interlockedincrement/interlockeddecrement是线程安全的。即它们在多线程下能保证执行结果正确,而inc/dec不能。或者按操作系统理论中的术语来说,这是一对“原语”操作。

以加一为例来说明二者实现细节上的不同:

一般来说,对内存数据加一的操作分解以后有三个步骤:

1、  从内存中读出数据

本文关键:Thread Event CriticalSection Synchronize
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top