我在共享系统上有一个消息队列。该队列由2个在其他2台机器上运行的进程访问。我需要通过2个进程来控制对这个队列的访问。所以我需要一个“网络互斥”。我怎样才能做到这一点?跨网络互斥 - C#.NET
我不认为这是C#.NET开箱即用的支持,但如果我错过了非常明显的东西,请指点我正确的方向。这个问题之前已经提出过,但解决方案建议涉及一个数据库。我没有任何问题的数据库。
How To Mutex Across a Network?
我在共享系统上有一个消息队列。该队列由2个在其他2台机器上运行的进程访问。我需要通过2个进程来控制对这个队列的访问。所以我需要一个“网络互斥”。我怎样才能做到这一点?跨网络互斥 - C#.NET
我不认为这是C#.NET开箱即用的支持,但如果我错过了非常明显的东西,请指点我正确的方向。这个问题之前已经提出过,但解决方案建议涉及一个数据库。我没有任何问题的数据库。
How To Mutex Across a Network?
使用MSMQ或其他排队系统设计在整个网络中使用。
Win32没有像muxtex这样的跨机同步原语,您可能可以从文件锁定中构建某些东西,但您只是重新发明了MSMQ。
我想知道是否有一些东西可以传递给OpenNamedMutex(),这会导致它在远程计算机上打开一个命名互斥体,以照顾底层连接和东西,当然假设需要访问权限。 像这样的东西可以解决我的问题。任何想法,如果MSMQ有我可以使用的东西?(@aaronls'上面的评论) – atlantis 2010-02-01 11:51:14
@atlantis:没有什么可以传递的,Win32 mutxes仅限于当前会话(或可能 - 具有足够特权的用户 - 整台机器)。没有更大范围的可能性。 – Richard 2010-02-01 14:57:20
@atlantis:MSMQ支持可跨多台机器安全使用(包括分布式事务)的(序列化)对象的队列。它直接受.NET支持('system.messaging'命名空间)。 – Richard 2010-02-01 14:58:41
我想我找到了我正在寻找的东西......它变成了一个简单的属性设置!
应该已经探讨过这个第一!
杰夫重点报告了一个问题,这个和他的经验: http://weblogs.asp.net/jkey/archive/2004/05/12/130922.aspx
谢谢大家的帮助。
你是否试图避免两个进程出列和处理相同的消息或其他东西? – Paolo 2010-02-01 11:18:15
我不知道MSMQ是否可以满足您的要求,但也许值得一看。 – AaronLS 2010-02-01 11:21:14
@Paolo:是的!从头脑的任何解决方案? @aaronls:我正在使用MSMQ ...不知道它是否提供了一些内置的锁定设施,我可以使用? – atlantis 2010-02-01 11:48:21