当代码在多台机器上运行时,使用什么而不是"lock"语句?

Mar*_*icz 12 .net multithreading synchronization cluster-computing server-farm

lock语句确保一个线程不进入代码的关键部分,而另一个线程处于临界区.但是,如果工作负载分布在服务器场(例如,少量IIS服务器+负载平衡器),则无法工作.

.NET是否支持这种情况?
是否有任何类可用于控制在多台机器上运行的线程执行关键代码段?

如果没有,是否有任何处理此类问题的标准方法?

此问题的灵感来自于此处开始但不仅限于SharePoint或ASP.NET的讨论.

Kit*_*Kit 5

如果您有权访问集中式 SQL Server 实例,则可以将其用作分布式锁协调器并使用sp_getapplocksp_releaseapplock存储过程管理应用程序锁。

SQL Server 2005 中的应用程序锁(或互斥锁)