Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有什么好的分布式并行模式吗?_C#_Parallel Processing_Distributed Computing_Plinq - Fatal编程技术网

C# 有什么好的分布式并行模式吗?

C# 有什么好的分布式并行模式吗?,c#,parallel-processing,distributed-computing,plinq,C#,Parallel Processing,Distributed Computing,Plinq,我有一个for循环,我想用PLINQ的Parallel.ForEach()之类的东西来并行化 这里的关键是,我调用的C++库是绝对不安全的,因此,任何并行化的计划都需要跨多个进程来执行。 我正在考虑使用WCF创建一个“分发服务器”进程,“客户机”和多个“计算器”都可以连接到该进程,并在队列中添加/删除项目,然后“计算器”将结果直接发送回客户机,客户机可以在收到结果时更新gui。这种体系结构将允许我把尽可能多的“计算器”带到网上,就像我看到的那样,甚至可以把它们带到多台计算机上,创造一个所有客户都

我有一个for循环,我想用PLINQ的Parallel.ForEach()之类的东西来并行化

这里的关键是,我调用的C++库是绝对不安全的,因此,任何并行化的计划都需要跨多个进程来执行。 我正在考虑使用WCF创建一个“分发服务器”进程,“客户机”和多个“计算器”都可以连接到该进程,并在队列中添加/删除项目,然后“计算器”将结果直接发送回客户机,客户机可以在收到结果时更新gui。这种体系结构将允许我把尽可能多的“计算器”带到网上,就像我看到的那样,甚至可以把它们带到多台计算机上,创造一个所有客户都可以共享的潜在处理能力农场

我只是想知道是否有人有这样做的经验,是否有现有的应用程序块或框架,我可以用来为我建立这一点。PLINQ在过程中做到了这一点。有像DPLINQ(分布式)之类的吗



另外,如果这不存在,有人想对我提出的架构发表意见吗?有明显的陷阱吗?有人认为它会起作用吗

听起来你可能在找。现在这是微软的一个研究项目,但他们确实有一个“学术版”。我的理解是,在2011年底的某个时候,他们也在为RTM更好地生产it(可能是与Azure的某种集成)。Mary Jo Foley对此进行了详细介绍。

听起来你可能正在寻找。现在这是微软的一个研究项目,但他们确实有一个“学术版”。我的理解是,在2011年底的某个时候,他们也在为RTM更好地生产it(可能是与Azure的某种集成)。Mary Jo Foley对此进行了详细介绍。

控制/调度分布式工作的长期标准是。我只从C++使用过它,但是存在多种语言的实现。一个快速的谷歌建议这可能是一个很好的.Net实现

控制/调度分布式工作的长期标准是。我只从C++使用过它,但是存在多种语言的实现。一个快速的谷歌建议这可能是一个很好的.Net实现

需要在进程之间传输的数据量有多大?据我所知,WCF使用相当慢的序列化程序。因此,如果你传输大量数据,共享内存可能是一个好主意。在你投入太多时间之前,我会确保付出的努力值得回报。PLINQ之所以伟大,是因为它为您提供了“免费”的并行处理。我知道PLINQ是伟大的——但由于库不是线程安全的问题,我不能使用它。输出的对象没有那么大,但是这个过程会创建一些大块的数据,可能是40-50个数组,每个数组有500个双倍?我认为NetTCP序列化程序足够快来处理这个问题。在进程之间需要传输的数据量有多大?据我所知,WCF使用相当慢的序列化程序。因此,如果你传输大量数据,共享内存可能是一个好主意。在你投入太多时间之前,我会确保付出的努力值得回报。PLINQ之所以伟大,是因为它为您提供了“免费”的并行处理。我知道PLINQ是伟大的——但由于库不是线程安全的问题,我不能使用它。输出的对象没有那么大,但是这个过程会创建一些大块的数据,可能是40-50个数组,每个数组有500个双倍?我认为NetTCP序列化程序足够快,可以处理这个问题。哇,这正是我想要的。看起来我有一些阅读要做。嗯。。。显然MPI和Dryad都需要微软的HPC服务器许可证。这是正确的。。。至少现在是这样。就像我说的,你可以打赌,你会看到它在某个时候成为Azure PaaS中的某种产品。@skimania,MPICH是一个适用于Windows的MPI守护程序实现:dryad是哇-这正是我想要的。看起来我有一些阅读要做。嗯。。。显然MPI和Dryad都需要微软的HPC服务器许可证。这是正确的。。。至少现在是这样。就像我说的,你可以打赌,你会看到它在某个时候成为Azure PaaS中的某种产品。@skimania,MPICH是一个适用于Windows的MPI守护程序实现:dryad实际上是,这个MPI作为一个平台听起来比dryad成熟得多,但我真的很喜欢端到端MS解决方案的想法,所以我要先研究这个问题。实际上,这个MPI作为一个平台听起来比Dryad成熟得多,但我真的很喜欢端到端MS解决方案的想法,所以我要先研究这个问题。