关于自定义类的初级问题(100分)

  • 主题发起人 主题发起人 mycoolis
  • 开始时间 开始时间
M

mycoolis

Unregistered / Unconfirmed
GUEST, unregistred user!
一个自定义的类,里面有好几个公共方法
在主进程里 实例化一个对象 object1

然后可不可以在不同的线程里同时调用object1的不同方法?好像应该可以的说。。谢谢先

 
严格说来,对同一段数据的访问,各个线程必须实现“互斥”,因为线程的执行并不是以
你的过程为单位的,一个线程的执行可能在过程中的任意位置暂停。比如,你的对象有两个
方法 A和B,它们的代码如下:
//FInt1和FInt2均是在TMyObj中定义的内部变量
procedure TMyObj.A;
begin
FInt1:=FInt1+3
//a1
FInt2:=FInt2*5
//a2
end;
procedure TMyObj.B;
begin
FInt2:=FInt2+1
//a3
FInt1:=FInt2*4
//a4
end;
如果我们在两个线程中分别针对同一个对象执行A和B方法,实际的执行的过程很可能是
a1->a3->a2->a4,这显然不是你的初衷。因此,如果你在不同线程中调用的方法可能相互
影响的话,建议采用设置临界区(CriticalSection)的方法实现线程(访问同一个对象时)
的互斥(请参考 TCriticalSection 的帮助)。
 
要看你那几个公用方法干了什么事情,要是都只是对数据的访问,不涉及修改的话
不用顾虑太多。
要是又有写,又有读,只好用 临界区 或 互斥变量。

 
got it,thx
beta 答的最中肯,creation-zy 详细
 
后退
顶部