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

Delphi多线程学习(6):信号量Semaphore

信号量是建立在互斥量的基础之上,同时加入重要特性:提供了资源计数功能,因此预定义数量的线程同时可以进入同步的代码块中。
      信号量是维护0到指定最大值之间的计数器的同步对象,当线程完成一次信号量的等待时,计数器自减1,当线程释放信号量对象时,计数器自增1。
      借用上面的图书馆例子,信号量好像是多设几把管理钥匙。每次可以设定N把钥匙同时工作,那就有N个人员可以同时办理业务。
     信号量使用的一般步骤:
1、声明一个全局的信号量名柄,如:hSem:THandle;
2、创建信号量:CreateSemphore(
                              lpSemaphoreAttributes:PSecurityAttributes;
                              lInitialCount,lMaximumCount:LongInt;
                              lpName:PChar):THandle;stdcall;
  (lpSemaphoreAttributes参数,指向TSecurityAttributes记录的指针,一般可以缺省填入nil值;
    lInitialCount参数,是信号量对象的初始计数,是0~lMaximumCount之间的数。当它大于0时,信号量就进入了信号状态,当WaiForSingleObject函数释放了一个线程,信号量计数就减1。使用ReleaseSemphore函数可以增加信号量计数;
   lMaximumCount参数,是信号量对象计数的最大值;
   lpName参数,指定信号量的名字。)
3、用等待函数WaiForSingleObject协调线程。
4、当一个线程用完一个信号,释放。使用ReleaseSemphore(
                                              


相关文档:

在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实现批量读取格式有规律的文本文件的内容.

现有一系统不定时在同一目录下生成一批txt文件,内容大概如下;
      20100112_164910,6,81406392,808,113,,
为方便统计,需要将这些txt文件中的数据读入数据表中.
现有两种方法:
   一是直接将数据读入到数据表中的某一列中,再用sql 语句拆开成几列: 
     ......

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

 临界区是一段代码,一次只允许一个线程执行这段代码。当把一段代码放入一个临界区, 线程执行到临界区时就独占了, 其他线程如果要访问这段代码,一定要等前一个访问的线程结束才行。借用前面的比喻比作图书馆,临界区就像把图书馆设计成只有一个位置(现实中好像不太合理,不管了,反正这么个意思),当有一个人正在办 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号