1
|
Shane Fulmer Lasse V. Karlsen · 技术社区 · 14 年前 |
![]() |
1
1
听起来你的设计不好。如果可能的话,您的服务不应该保持状态。这样,就没有共享的状态可以继续。 如果您必须保持状态,那么您必须将对该共享状态的所有访问都联锁起来。您可以使用C中的“lock”关键字进行以下操作:
|
![]() |
2
1
关于您的特定问题的更多细节将有助于获得一个好的解决方案——但是,听起来您需要某种形式的进程间/跨服务器锁定。在.NET框架(或win32 API)中没有任何东西可以让这个过程简单化——恐怕你必须推出自己的解决方案。 您可能希望研究某种集群队列机制,以便只有一个进程/线程正在执行一个操作。这在您的总体设计和您试图解决的问题中可能很容易,也可能不容易。或者,您可以使用中央授权(如数据库)和锁定结构来确定特定操作的锁是否已经启动。存在的问题是,由于需要不断地与数据库交互,很难使这样的解决方案能够很好地扩展。 您可能拥有的另一个选项是允许多个进程尝试同时处理同一个操作,但只允许一个操作完成。这可能很难确保——但执行额外的工作并将其扔掉的成本(计算上)要比经常检查其他人是否已经在做这项工作的成本更低。 |
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 2 年前 |