簡體   English   中英

C++ 是否有 C# TPL 數據流的替代方案?

[英]Is there an alternative to C# TPL Dataflow for C++?

我最近發布了一個關於使用委托模擬連接對象的問題,在那里我收到了關於使用 TPL DataFlow 庫非常輕松和干凈地為我的應用程序開發解決方案的很好的答案。

問題是我被困在 .NET 3.5 或 C# 下。 我想我可能已經能夠升級到 .NET 4.5,但在這個階段我不能。 據我所知,我無法將 Dataflow 庫重新定位到 .NET 3.5,所以我的下一個解決方案是尋找與 TPL Dataflow 類似的 C++ 替代方案 - 這不是最好的方案,但我可以編譯將 C++ 代碼轉換為 DLL 並將其導入到我們的 C# 應用程序中。

總結一下我對這個問題的 C++ 庫的要求:

  • 我需要能夠將復雜網絡中的節點連接在一起,並在它們之間傳遞資源單元。 隨着時間的推移,其中一些將產生有限數量的資源。 其他人會以特定的速度消耗它。

您可能會考慮使用單聲道版本的 TPL Dataflow並為 .Net 3.5 自行編譯。

我認為在嘗試編譯該代碼時您會遇到的最大問題是它嚴重依賴 TPL,而 TPL 通常不適用於 .Net 3.5。 似乎在舊版本的 Rx中可以使用向后移植的版本,因此使用它可以工作。

(此外,TDF 的單聲道版本的部分內容是我編寫的,我幾乎沒有收到任何有關它的反饋,因此可以肯定其中存在錯誤。)

幸運的是,有人似乎正在創建 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);
                                                      });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM