请问,delphi里面有没有像java中的同步方法?(50分)

  • 主题发起人 主题发起人 ahjie
  • 开始时间 开始时间
A

ahjie

Unregistered / Unconfirmed
GUEST, unregistred user!
如果没有,该怎么实现呢?
我想写一个方法,每次只能有一个线程能够访问这个方法。
兄弟们,这个怎么解决啊?
钱不多,大家帮帮忙~~
 
容易啊!
uses
SyncObjs;
var
Lock:TCriticalSection
Lock:=TCriticalSection.Create;
Lock.Enter;
//只想让一个线程访问的代码。
Lock.Leave;
 
fuction myfuction(n:integer):integer
var
Lock:TCriticalSection;
begin
Lock:=TCriticalSection.Create;
Lock.enter;
... //方法代码;
Lock.leave;
end;

是这样么????
 
to ahjie
Lock.leave;
后面要加
lock.free
最保险的是调用时保护
;
Lock.enter;

myfuction(xxx) //保护调用
Lock.leave;

因为
;
fuction myfuction(n:integer):integer
var
Lock:TCriticalSection;
begin
Lock:=TCriticalSection.Create;
Lock.enter;
... //方法代码;

Lock.leave;
//此处可能会发生进程切换。。。
end;



 
还不是很明白,能否go on啊?
 
临界区的声明和初始化是不是应该放在方法外边啊?
var
Lock:TCriticalSection;
Lock:=TCriticalSection.Create;
 
应该要的,当然最后不用时要对Lock进行Free.
 
多人接受答案了。
 
后退
顶部