0
我正在設計一個OMS並嘗試使用多線程技術來加速處理。線程池和數據親和力
一個簡單的方法是靜態分配線程:一個線程適用於以字母開頭的所有證券。很顯然,其中一些可能非常繁忙,而另一些則無所事事。而且我們事先並不知道用戶將進入哪些股票。
所以我轉向線程池。現在時間可能會在線程間更均勻地分配。但是需要處理一些開銷:我必須鎖定每個訂單,這當然不愉快。
有關如何最小化鎖定時間並實現更高吞吐量的任何想法?
非常感謝您的建議。
P.S,它是一個Unix環境。使用的語言是C++
Alex, 在我看來,所有線程池實現都不考慮數據親和性。所以如果我使用線程池,大量的鎖/通知是必要的,以確保數據的完整性。 您是否知道線程池的任何實現將數據關聯考慮在內?理想情況下,我不想在我的代碼中鎖定任何鎖。訂單的所有事件都應按順序處理。 謝謝 Pat – user1057019
「所有線程池實現不考慮數據關聯」 - 是的。 「如果我使用線程池,需要大量的鎖/通知來確保數據的完整性」 - 不。基本上,您必須添加鎖定/通知來提供原子添加/刪除查詢操作,以防使用隊列進行通信。我想你最好看看拋出ACE(cs.wustl.edu/~schmidt/ACE.html)教程,它們提供了關於線程池服務器創建的一些信息。 –