关于死锁问题,求个设计方案 多个客户端同时运行同一个程序。这个程序要独占访问表A,程序本身不存在多线程访问表A的情况。该怎么避免死锁呢?我的想法:如果在ini文件中设置一个标志,程序每次访问表A时都检查ini文件,这样太浪费cpu了吧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说的不完全,或者说一个表的多条记录,先后顺序不一致。简单的解决,在更新这些表的数据时,首先把这些要更改的数据全部锁定select * from tablename with uplockwhere id in (需要更改)就不会了 我用的Delphi7读写锁:dbfm.TTaskListAll.LockTable(ltReadLock);dbfm.TTaskListAll.LockTable(ltWriteLock);这样就会死锁不会用sql语句的方式。。由于程序中没有多线程访问,所以我考虑不用锁了。如何避免多进程修改同一条记录呢?当然,如果用锁可以解决的话,也好,求具体点的解决方案。我用的锁的方式会死锁~~ 每个程序分别修改一个表的不同记录?给表增加一个字段:fwholock程序想修改某条记录,就要先把fwholock设置为自己的guid(每个程序运行时,先生成一个guid)改完了,再把fwholock改为0。所以,改前还需要判断fwholock是否为0 独占A表?那应该是数据库的问题了,你能控制了自己的代码,控制不了别的软件啊,例如sql查询分析器 额 。没这么复杂。就是想锁定这个表dbfm.TTaskListAll.LockTable(ltReadLock);dbfm.TTaskListAll.LockTable(ltWriteLock);读写锁不能一下全加上,如果分开加可能死锁。有办法直接加上读写锁吗? 如何让CxGrid中cxGridView有垂直滚动? dlephi 编写操作硬件的activex的问题 将窗口拖动到面板中 DElPHI代码过五十万行跟瘪三的BCB没两样 慢!! Rave Dataview问题(在线等待) 外挂之解密!谁是解密高手? 急!!Intraweb开发--TIWFile显示文字自动清除和如何得到完整文件名的问题 clientdataset问题严重了 Delphi高手请进:关于代码的问题 如何记录在键盘上按两个键时windows 所发送的消息 如何对存储过程里的临时表插入多条记录,查询时一次全部查询 delphi 選擇dbgrid的picklist值后觸發哪個事件
where id in (需要更改)就不会了
dbfm.TTaskListAll.LockTable(ltReadLock);
dbfm.TTaskListAll.LockTable(ltWriteLock);
这样就会死锁不会用sql语句的方式。。由于程序中没有多线程访问,所以我考虑不用锁了。
如何避免多进程修改同一条记录呢?当然,如果用锁可以解决的话,也好,求具体点的解决方案。我用的锁
的方式会死锁~~
程序想修改某条记录,就要先把fwholock设置为自己的guid(每个程序运行时,先生成一个guid)
改完了,再把fwholock改为0。所以,改前还需要判断fwholock是否为0
那应该是数据库的问题了,
你能控制了自己的代码,控制不了别的软件啊,例如sql查询分析器
就是想锁定这个表
dbfm.TTaskListAll.LockTable(ltReadLock);
dbfm.TTaskListAll.LockTable(ltWriteLock);
读写锁不能一下全加上,如果分开加可能死锁。
有办法直接加上读写锁吗?