apusic 发表于 2013-1-28 13:18:53

delphi中多线程同步的一些方法

多核时代的到来,对于我们程序员来说要尽快的,尽可能多的使用多线程编程只有这样,作的程序才会有高效率,这个思想一定要宣传啊,不然多核时代了,还写单线程的程序就太不够档次了。

delphi中多线程同步的一些方法

当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源。例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件中的字符数。当然,在把整个文件调入内存之前,统计它的计数是没有意义的。但是,由于每个操作都有自己的线程,操作系统会把两个线程当作是互不相干的任务分别执行,这样就可能在没有把整个文件装入内存时统计字数。为解决此问题,你必须使两个线程同步工作。
存在一些线程同步地址的问题,Win32提供了许多线程同步的方式。在本节你将看到使用临界区、 互斥、信号量和事件来解决线程同步的问题。

1. 临界区
临界区是一种最直接的线程同步方式。所谓临界区,就是一次只能由一个线程来执行的一段代码。如果把初始化数组的代码放在临界区内,另一个线程在第一个线程处理完之前是不会被执行的。
在使用临界区之前,必须使用InitializeCriticalSection()过程来初始化它。
其声明如下:     procedure InitializeCriticalSection(var
页: [1]
查看完整版本: delphi中多线程同步的一些方法