关于死锁问题,求个设计方案
多个客户端同时运行同一个程序。
这个程序要独占访问表A,程序本身不存在多线程访问表A的情况。
该怎么避免死锁呢?
我的想法:
如果在ini文件中设置一个标志,程序每次访问表A时都检查ini文件,这样太浪费cpu了吧。
[解决办法]
都访问一个表不会死锁,死锁至少需要两个表。呵呵
[解决办法]
说的不完全,或者说一个表的多条记录,先后顺序不一致。
简单的解决,在更新这些表的数据时,首先把这些要更改的数据全部锁定
select * from tablename with uplock
where id in (需要更改)
就不会了
[解决办法]
每个程序分别修改一个表的不同记录?
给表增加一个字段:fwholock
程序想修改某条记录,就要先把fwholock设置为自己的guid(每个程序运行时,先生成一个guid)
改完了,再把fwholock改为0。所以,改前还需要判断fwholock是否为0
[解决办法]
独占A表?
那应该是数据库的问题了,
你能控制了自己的代码,控制不了别的软件啊,例如sql查询分析器