2017-05-31 20 views
2

我想問以下問題的最佳方法: 我有兩個截然不同的進程:生產者和消費者。 生產者生產物品,其中每個物品都是無符號整數。消費者消費它們,與常規消費者生產者問題不同的是,消費者需要知道物品生產的確切時間。 消費者不能相信生產者,因此生產者不應該將時間與物品一起提供,消費者在消費物品時何時要求系統當前時間。 由於生產者是實時應用程序,所有這些都需要儘可能減少對生產者的影響。在Unix用戶空間中的實時IPC

我試着在Unix上閱讀IPC機制,但是我沒有找到能夠滿足這些約束條件的東西。消費者和生產者用C++編寫。

任何想法將受到歡迎, 在此先感謝

+0

我想你想要一個項目正在生產和消耗之間的時間儘可能小,不是?所以消費者本身也應該是一個實時應用程序。否則,你可以在閒暇時從消費中消耗一些東西,並按照正常的優先級進行處理,並讓內核負責不讓處理步驟踩在腳趾上。 –

回答

0
  1. 使用生產者和消費者之間的共享內存。
  2. 調查消費者一方的事件,以儘量減少延誤。
  3. 將消費者線程固定到CPU以防止上下文切換(CPU關聯)。
  4. 使用計時器計數器(TSC)避免長時間「獲取時間」系統調用。

這會給你最精確的結果。

當然,如果您有其他需求,您可以犧牲上述一些項目,以使您的消費應用程序更高效或不復雜......這取決於您。

+0

謝謝,我不知道計時器郵票櫃檯,我會看看。這還不夠,因爲消費者仍然需要等待下一個上下文切換。 –

+0

@TomerGolomb你是什麼意思?消費者必須對事件進行輪詢以避免任何上下文切換(#2) –