我有一個類CallerA
和一個類CalleeB
。
類CalleeB
有一個隊列並異步完成作業。
例如,如果CalleeB
有一個函數enqueue(int input)
和CallerA
電話CalleeB.enqueue(1)
和CalleeB.enqueue(11)
,輸入11的結果可以早於輸入1
現在回來了,CallerA
創建10個CalleeB
實例。 CallerA
將輸入從1到5增量到隨機CalleeB
實例,從6到10增量到隨機CalleeB
實例和從11到15等等。 CallerA
將等待回調以接收來自CalleeB
實例的結果,並且如果收到全部1〜5個結果,則CallerA
將執行某些操作。另外如果CallerA
收到6到10收到,CallerA
會做點什麼。
當然,輸入1和6可能與CalleeB
實例相同,並且6返回的時間早於1.
有沒有一種有效的技術來實現計數結果從CalleeB
?用於統計來自不同實例的響應數的編碼技術
0
A
回答
0
有沒有一種有效的技術來實現來自CalleeB的CallerA計數結果 ?
當然,CallerA只需要跟蹤他收到回來的結果,以便當他收到一個集合中的所有5個結果時,他可以對它們採取行動。
我會這樣做的方式是讓CallerA維護一個unordered_map<int, Result>
,並且每當從CalleeB接收到結果時,將它放入unordered_map中,然後檢查該集合的其他4個結果是否也存在在unordered_map中;如果是這樣,請將它們從unordered_map中移除並處理它們。或者,您可以保留一個5項子結果數組的10個數組,並將每個結果放入相應的子數組(arrayIdx = i/5)中的相應槽(slotIdx = i%5) 5)。將結果放入適當的子數組後,您可以檢查子數組的插槽以查看它們是否全部填充,或者可以增加特定於該子數組的計數器,當計數器達到5時,數組必須已滿。
相關問題
- 1. 來自Google地理編碼的不同編碼/響應-API
- 2. 關於雲計算中使用的編碼技術的調查
- 3. 編碼技術
- 4. 響應式設計+ RESS技術
- 5. Windows產品密鑰 - 來自不同技術的不同答案
- 6. Jpeg編碼技術
- 7. Facebook編碼技術
- 8. 哪種2D技術用於編碼超過1kb的數據?
- 9. 統計不同實例的記錄
- 10. 「警報管理系統」中的Java支持來自交叉技術的應用
- 11. 用於不同模式之間數據比較的技術
- 12. 的Javascript的書,瞭解編碼技術
- 13. 什麼技術用於彙總來自互聯網的信息?
- 14. 什麼是編碼技術叫?函數[]()
- 15. 用於確保HTML和URL編碼的技術
- 16. 關於技術GUI設計的資源
- 17. 如何將OOP技術應用於Delphi數據庫編程?
- 18. 設計模式應該也適用於Postgres的技術
- 19. 是否有用於複製在不同的數據庫供應商數據的特定工程技術/設計?
- 20. 我應該使用什麼技術來構建心跳系統?
- 21. UTF-8使用的前導位編碼技術的計數名稱是什麼?
- 22. 基於用例的數據庫技術選擇
- 23. 挖掘技術計數器
- 24. ASP.NET MVC3設計模式和正確的編碼技術
- 25. JavaScript編碼技術或錯誤代碼?
- 26. 你使用什麼技術來處理不同的JSON結構?
- 27. 針對不同操作系統的語義技術
- 28. 用於實時數據聚合的哪種技術(SQL/NoSQL)
- 29. 來自多個技術檔案的相同輸出聲明
- 30. 用於在mongoDB的系統中存儲庫的技術.js
感謝您的評論!無序的地圖會比地圖更快嗎? –
速度稍快一點 - unordered_map上的查找是O(1),在地圖上它們是O(log(N))。使用數組+計數器方法可能會比任何一種類型都快。也就是說,在你看的規模(50項)中,你不可能測量差異;如果您計劃將其擴展到數千或數萬個物品,您可能會這樣做。 –