我有一块工作,它已分成更小的块。我想将每个块分配给NumberCruncher的实例(每个实例将托管在一个唯一的EndPoint上,并且将在服务器上的特定线程上运行)。然后,在以txt文件格式返回结果之前,指定EndPoint处的NumberCruncher实例将进入并处理由客户端代理传递给它的那些数字。
从客户端来看,我假设我需要保留2个线程安全列表,1包含链接到NumberCruncher实例的EndPoints,它们等待返回结果。 NumberCruncher实例的第二个等待分配更多工作?
关于向这些列表添加项目,如何处理来自服务器的多个请求?一次只能添加一个,所以我假设客户端需要向服务发送一条消息,说“是,您已成功添加到列表中,现在停止请求添加。”?
修改 的
我目前正在尝试对我收集的时间序列进行一些分析。我编写了一个程序(Number Cruncher),它分割了我想要检查的不同参数,并将它们分配给不同的线程(由我的电脑中的核心数决定)。然后每个线程使用指定的输入运行Number Cruncher。不幸的是,即使使用所有核心,这也会在我的电脑上花费大量的时间。所以我想在几个pc(服务器)上运行相同的程序,并编写一个程序,将工作分配给所有服务器。每次模拟大约需要1小时。所以我要看520小时的计算时间(即单个电脑不可行)。
答案 0 :(得分:1)
我认为你在想这个。
在WCF中,您可以控制实例数(单个,每个会话和每个请求)以及实例是单线程还是多线程。但不要超过请求的线程亲和性。
而且你不需要,在我看来你应该只配置每个请求的实例(很大程度上取决于编码和状态管理的细节)。
您可以限制服务器以实现最大容量和可接受的延迟。如果你不需要,不要乱用线程管理。
修改
之后您可以使用WCF,但它是分布式计算问题,存在专用软件。
您可以将工作PC作为服务器运行,这似乎是您当前的方向。但我会: