lock
statement确保当另一个线程处于临界区时,一个线程不会进入代码的临界区。但是,如果工作负载分布在服务器群中(例如,几个 IIS 服务器 + 一个负载平衡器),它将无法工作。
.NET 是否支持这样的场景?
是否有任何类可用于控制多台机器上运行的线程执行关键代码部分?
如果没有,是否有处理此类问题的标准方法?
这个问题的灵感来自 discussion that started here但不限于 SharePoint 或 ASP.NET。
最佳答案
如果您有权访问集中式 SQL Server 实例,则可以将其用作分布式锁协调器并使用 sp_getapplock 管理应用程序锁。和 sp_releaseapplock存储过程。
Application Locks (or Mutexes) in SQL Server 2005
关于.net - 当代码在多台机器上运行时,用什么来代替 "lock"语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8189439/