delphi中的线程类 猛禽[mental studio] http://mental.mentsu.com 之四 临界区(
用临界区保护共享数据的方法很简单:在每次要访问共享数据之前调用enter设置进入临界区标志,然后再操作数据,最后调用leave离开临界区。它的保护原理是这样的:当一个线程进入临界区后,如果此时另一个线程也要访问这个数据,则它会在调用enter时,发现已经有线程进入临界区,然后此线程就会被挂起,等待当前在临界区的线程调用leave离开临界区,当另一个线程完成操作,调用leave离开后,此线程就会被唤醒,并设置临界区标志,开始操作数据,这样就防止了访问冲突。
以前面那个interlockedincrement为例,我们用criticalsection(windows api)来实现它:
var
interlockedcrit : trtlcriticalsection;