mit*_*llt 0 c# sql multithreading thread-safety
我有一台服务器和“x”个客户端。
当服务器侦听入站连接时,它将创建一个客户端处理程序实例(管理客户端通信的类),该实例将在单独的线程中分离。
根据客户端发送到服务器的命令,服务器可能需要访问 SQL 数据库来存储有关该客户端的信息。
客户端处理程序实例将“处理”此请求。唯一的问题是,如果多个客户端处理程序想要访问 SQL 数据库来执行完全相同的操作,则可能会出现读/写问题。
我正在考虑在服务器上公开一个静态方法,从客户端句柄实例调用它,然后锁定访问 SQL 数据库的函数(读或写)。
这是一个好方法还是有更好的方法?
谢谢。
小智 5
那么,您确实知道 SQL 有锁和大量内部机制来序列化访问吗?这是自 1950 年代创建 SQL 以来 SQL 中根深蒂固的 ACID 条件的一部分吗?SQL 中的锁定机制非常非常精细,基本上你试图解决一个 60 多年前就已经解决的问题......因为看来你需要阅读一本有关 SQL 基础知识的书。
正常情况下(标准连接字符串)资源访问在 SQL Server 中是序列化的(TransactionIsolationLevel 序列化),但这是可以调整的。我强烈建议您学习一些 SQL 基础知识。