我正在试着找出一个问题陈述的解决方案。为了简单起见,该应用程序将是一个控制台应用程序。一个数据库包含大约10000行。我有一个开发一个c#应用程序,这将产生10个线程,每个线程将处理数据库中的5条记录。现在的问题是我将在另一台机器上运行相同的应用程序。因此,我们有两个应用程序实例,每个应用程序应该处理5000行,并且它们不应该在记录上重叠。此外,我需要有一个中央控制器,它需要显示线程ids,是运行在每个应用程序。任何解决这个问题的建议都是很棒的。
发布于 2012-05-01 16:24:56
我将在数据库中创建一个'Processing Status‘列,每个实例将通过更改记录的状态来标记它正在处理的记录。
另一种解决方案是使用队列或Service Broker,每个实例将挑选一条消息来处理公共队列中的一条记录。在这里,您需要另一个进程来填充队列。
使用WCF在机器之间进行通信以同步工作是非常复杂和棘手的。
发布于 2012-05-01 17:12:14
我同意雅各布的观点。如果你想让独立的实例直接相互通信,你应该阅读两个通用问题(http://en.wikipedia.org/wiki/Two_Generals%27_Problem),并考虑如何设计一个没有竞争的非阻塞交汇点。
https://stackoverflow.com/questions/10395230
复制相似问题