2012-05-22 193 views
-1

我有一個緩衝區來從套接字讀取數據,但我有一個問題,多3線程想訪問他,我怎麼能爲他們創建多線程緩衝區?多線程緩衝區C++

謝謝!

+0

你想施加什麼樣的規則。 Serialise閱讀?或者是其他東西? –

回答

1

它完全取決於線程期望從套接字獲得的內容。來自套接字的數據不太可能在三線程的讀取之間被混淆,因此您需要在一定範圍內進行一些同步,而不僅僅是確保每個線程都可以從套接字讀取字節而不干擾其他線程'做同樣的能力。

那麼線程應該如何同步呢?他們是否獨立地將記錄拉出插座?他們都應該讀取所​​有數據嗎?還有別的嗎?

如果他們獨立地從套接字中提取記錄,那麼應該只需要一個線程從套接字讀取記錄,構造某種記錄對象,並將這些對象放置在線程安全隊列中以供3個線程訪問。

如果線程都應該讀取相同的數據,那麼您有一個緩衝區,其中每個線程向緩衝區註冊,並且緩衝區會跟蹤每個讀者的位置。然後緩衝區會保留數據,直到所有線程都讀取完畢,並且一旦所有線程都清除了數據並用套接字中的更多數據填充該空間。