1

我最近发布了一个关于使用委托来模拟连接对象的问题,其中我收到了关于使用 TPL DataFlow 库非常容易和干净地为我的应用程序开发解决方案的一个很好的答案。

问题是我被困在 .NET 3.5 或 C# 下。我想我可能已经能够升级到 .NET 4.5,但在这个阶段我还不能。据我所知,我无法将 Dataflow 库重新定位到 .NET 3.5,所以我的下一个解决方案是寻找与 TPL Dataflow 类似的 C++ 替代方案——这不是最好的方案,但我可以编译将 C++ 代码转换为 DLL 并将其导入我们的 C# 应用程序。

总结一下我对这个问题的 C++ 库的要求:

  • 我需要能够将复杂网络中的节点连接在一起,并在它们之间传递资源单元。随着时间的推移,其中一些将产生有限数量的资源。其他人会以特定的速度消耗它。
4

2 回答 2

2

您可以考虑使用mono 的 TPL Dataflow 版本并自己为 .Net 3.5 编译它。

我认为您在尝试编译该代码时会遇到的最大问题是它严重依赖于 TPL,而 TPL 通常不适用于 .Net 3.5。但似乎在旧版本的 Rx 中有一个向后移植的版本,所以使用它可以工作。

(另外,单声道版本的 TDF 的一部分是我写的,我几乎没有收到任何关于它的反馈,所以可以肯定那里有错误。)

于 2013-04-06T10:49:10.407 回答
0

幸运的是,似乎有人正在创建 C# TPL 数据流的 C++ 等效项: https ://github.com/renestein/Rstein.AsyncCpp#Flat-Dataflow

片段:

 auto transform1 = DataFlowAsyncFactory::CreateTransformBlock<int, string>([](const int& item)-> Tasks::Task<string>
                                                      {
                                                        auto message = "int: " + to_string(item) + "\n";
                                                        cout << message;
                                                        //await async operation returning standard shared_future.
                                                        co_await GetCompletedSharedFuture();
                                                        co_return to_string(item);
                                                      });
于 2021-02-03T09:39:31.900 回答