究竟如何使用critical(临界)区???(100分)

  • 主题发起人 主题发起人 honestman
  • 开始时间 开始时间
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有具体的例子啊???
我还是不会用啊!
VCL支持三种技术来达到这个目的:
(2) 使用critical区
如果对象没有提高内置的锁定功能,需要使用critical区,Critical区在同一个时间只也
许一个线程进入。为了使用Critical区,产生一个TCriticalSection全局的实例。
TcriticalSection有两个方法,Acquire(阻止其他线程执行该区域)和Release(取消阻止)
  每个Critical区是与你想要保护的全局内存相关联。每个访问全局内存的线程必须首
先使用Acquire来保证没有其他线程使用它。完成以后,线程调用Release方法,让其他线
程也可以通过调用Acquire来使用这块全局内存。
  警告:Critical区只有在所有的线程都使用它来访问全局内存,如果有线程直接调用
内存,而不通过Acquire,会造成同时访问的问题。例如:LockXY是一个全局的Critical区
变量。任何一个访问全局X, Y的变量的线程,在访问前,都必须使用Acquire
LockXY.Acquire;
{ lock out other threads }
try
Y := sin(X);
finally
LockXY.Release;
end;

 
临界区主要是为实现线程之间同步的,但是使用的时候注意,一定要在用此临界对象同步的
线程之外建立该对象(一般在主线程中建立临界对象)。
 
接受答案了.
 
谢了,好久没有在大富翁上赚分了。
 
后退
顶部