0

我正在尝试找出问题陈述的解决方案。为简单起见,该应用程序将成为控制台应用程序。一个数据库包含大约 10000 行。我有一个开发 ac# 应用程序,它将产生 10 个线程,每个线程将处理来自数据库的 5 条记录。现在问题是我将在另一台机器上运行相同的应用程序。因此,我们有两个应用程序实例,每个应用程序应处理 5000 行,并且它们不应在记录上重叠。我还需要一个中央控制器,它需要显示每个应用程序上运行的线程 ID。在这里解决这个问题的任何指针都会很棒。

4

2 回答 2

2

我将在数据库中创建一个“处理状态”列,每个实例将通过更改记录的状态来标记它正在处理的记录。

另一种解决方案是使用队列或服务代理,每个实例都会选择一条消息来处理来自公共队列的记录。您将需要另一个进程来填充队列。

恕我直言,使用 WCF 在机器之间进行通信以同步工作太复杂且难以正确处理。

于 2012-05-01T08:24:56.250 回答
2

我同意雅库布的观点。如果您希望单独的实例直接相互通信,您应该阅读有关两个将军问题 (http://en.wikipedia.org/wiki/Two_Generals%27_Problem) 并考虑如何设计非阻塞没有种族的约会。

于 2012-05-01T09:12:14.387 回答