簡體   English   中英

處理與 tbb 順序的大數據

[英]processing large data that sequential with tbb

我正在使用 c++ 應用程序來處理大量報價數據,例如。 (MSFT、AMZN 等)與 tbb。 並且想知道我將如何構建它。 我一直在研究parallel_for 和pipeline 以及concurrent_queue。

該過程基本上會解析數據,處理它和 output 到文件。 解析和處理可以並行完成,但 output 應該為每個符號按順序。

Eg. Input:
    - Msg #1 - AMZN #1
    - Msg #2 - AMZN #2
    - Msg #3 - IBM #1
    - Msg #4 - AMZN #3
    - Msg #5 - CSCO #1
    - Msg $6 - IBM #2

我想使用無鎖解決方案或最小鎖定,但似乎我保留在 concurrent_queue 中以保持訂單。

任何想法都會有所幫助

謝謝,大衛

如果使用流水線模式( tbb::pipeline class 或tbb::parallel_pipeline()函數),則可以使用有序過濾器來確保 output 以與接收到的輸入完全相同的順序出現。 而且您在訂購時不需要任何密碼鎖。

您的報價數據是否有時間戳或序列號
否則,從生產者線程添加一個序列號,並在解析后根據序列號對數據進行排序 - 然后可以在批處理中或在寫入文件之前完成重新排序。

您可以創建 output 結構(散列或列表),其中鍵是顯示元素(第 1、2、...)的 position,值是要顯示的數據。 然后當所有的元素都准備好后,就可以按照想要的順序構建output了。

這樣你就不用關心哪個線程先完成了。

暫無
暫無

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

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