当多线程对同一数据库进行操作的时候会可能发生冲突。
读读不会冲突,读写,写读等操作应该会引起冲突(其中的写包括update、delete和insert)。
解决冲突的方法:
1.使用 select * from 表名 with(nolock) --不对表加锁进行访问。即使有个用户正在delete 表名,也可以查询出当前表的数据
2.常见的并发问题,使用锁和事务来控制
封锁有两种:排它锁(X锁)和共享锁(S锁)。、
封锁可能引起活锁和死锁。避免活锁课用先来先服务策略;死锁预防方法有一次封锁法和顺序封锁法。死锁的诊断方法有超时法和等待图法。
【总结】
多线程程序去读写数据库,首先该数据库须支持并发访问,如果支持就要考虑并发控制的问题,根据自己需求可以决定是否使用with(lock),或者通过锁或者事务机制去解决。