delphi 中同一个类有两个不同的对象,然后用两个线程分别调用类中同一个函数,这样会不会死锁。。代码
unit Class2;interface
uses
Windows,Classes;
type
TT1 = class(TThread)
procedure Execute; override;
end;
TT2 = class(TThread)
procedure Execute; override;
end;
TClass2 = class
public
function Msg:Cardinal;
constructor Create;
destructor Destroy; override;
public
Lock:RTL_CRITICAL_SECTION;
dCot:Cardinal;
end;
var
c1:TClass2;
c2:TClass2;
t1:TT1;
t2:TT2;implementation
uses
CustomFun;
{ TClass2 }constructor TClass2.Create;
begin
InitializeCriticalSection(Lock);
end;destructor TClass2.Destroy;
beginend;function TClass2.Msg:Cardinal;
begin
EnterCriticalSection(lock);
while True do
begin
dCot := dCot + 1;
end;
LeaveCriticalSection(lock);
end;{ TT1 }procedure TT1.Execute;
begin
c1.Msg;
end;{ TT2 }procedure TT2.Execute;
begin
c2.Msg;
end;
unit Class2;interface
uses
Windows,Classes;
type
TT1 = class(TThread)
procedure Execute; override;
end;
TT2 = class(TThread)
procedure Execute; override;
end;
TClass2 = class
public
function Msg:Cardinal;
constructor Create;
destructor Destroy; override;
public
Lock:RTL_CRITICAL_SECTION;
dCot:Cardinal;
end;
var
c1:TClass2;
c2:TClass2;
t1:TT1;
t2:TT2;implementation
uses
CustomFun;
{ TClass2 }constructor TClass2.Create;
begin
InitializeCriticalSection(Lock);
end;destructor TClass2.Destroy;
beginend;function TClass2.Msg:Cardinal;
begin
EnterCriticalSection(lock);
while True do
begin
dCot := dCot + 1;
end;
LeaveCriticalSection(lock);
end;{ TT1 }procedure TT1.Execute;
begin
c1.Msg;
end;{ TT2 }procedure TT2.Execute;
begin
c2.Msg;
end;
解决方案 »
- 怎么把数据写到数据库另一表里
- 这小子5条裤叉了 , 散分庆贺一下!!!
- 请问在整个程序 失去"焦点"后,如何使自动弹出的窗体放到最前面(带图片解译)?????????????? 急!!!!!!!!!!!
- 调用别人EXE文件的问题???
- 怎样在窗体的on close事件中清除DBGrid中的内容?
- 请问这是个什么错误?
- 一个构件应用的简单问题。盼答。
- 请高手帮推荐几本Delphi的经典书
- 如何双击tabsheet标签关闭当前tabsheet?
- 谁知道哪里能下载delphi的installshield么?for 5.0的,多谢
- 万迅电脑软件(深圳)有限公司 怎么样呀
- 新手问题:主窗体如何取得登陆成功后的用户名?
不是全局的,没意义