.net - 当代码在多台机器上运行时,用什么来代替 "lock"语句?

标签 .net multithreading synchronization cluster-computing server-farm

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/

相关文章:

.net - 带有 Entity Framework 连接字符串的 NLog?

android - 移动设备与网络服务离线同步

java - MongoDB 结果集在执行查询后被修改

c# - 从Flurl重播HttpCall

.NET PrivateFontCollection - 加载不同样式的字体

multithreading - Interlocked.CompareExchange 的返回值是否有充分的理由

C#:查询线程的状态

java - 下面代码中是通过什么方法将任务提交给Executor框架的?

c# - 异步 WPF 命令

java - 如何限制用作工厂的 TestNG dataprovider 方法上的线程