多线程将数据写入同一个表的问题(100分)

  • 主题发起人 主题发起人 yellowfish
  • 开始时间 开始时间
Y

yellowfish

Unregistered / Unconfirmed
GUEST, unregistred user!
为何以下两种同步方式都无法阻止错误发生?
procedure myThread.execute;
begin
FreeOnTerminate := True;
EnterCriticalSection(CS);
(...数据写入...)
LeaveCriticalSection(CS);
end;

procedure myThread.execute;
begin
if WaitForSingleObject(hMutex,INFINITE)=WAIT_OBJECT_0 then
begin
(...数据写入...)
end;
ReleaseMutex(hMutex);
end;
 
有谁知道吗?
 
提示是什么错误呢?
 
数据库是SQLServer,返回的错误应该是:连接占线导致另一个命令
数据库是Oracle,返回的错误应该是:对象被打开。
这个问题我也正要问。
 
呵呵,提一下,我的问题在 http://www.delphibbs.com/delphibbs/dispq.asp?lid=2522075 ,知道也帮我看一下。
 
问题解决了,使用Synchronize实现对象操作互斥。
 
接受答案了.
 
我看可能还有其他问题,使用临界区和使用Synchronize同步其实都是单线程执行,没有理由临界区不能保证其单线执行的。
 
后退
顶部