我想設計一個多線程應用程序,它執行以下操作: 一個線程按順序寫入循環緩衝區。然後將有n個讀寫器線程等待由寫線程發起的某個信號喚醒並從循環緩衝區中讀取。該信號應該以某種方式包含一個整數值,該值表示要讀取的循環緩衝區偏移量。這可能在C++中做到嗎? 任何幫助,將不勝感激。多線程信號
因爲我想要一個能夠儘可能接近高速實時流量的設計,所以我想要消除內存的任何分配/釋放。所以循環隊列將是啓動時分配的連續內存塊。我不確定你提到的排隊是否符合這一點。
生產者只需要跟蹤每次寫入字節時從哪裏開始寫入字節的循環緩衝區數組。 所以我真正要求的是製作者在完成寫入事件時傳播「信號」的方式,該事件包含寫入循環緩衝區的最後一個字節的位置(偏移量)。這將避免需要鎖定機制。
當接收到「傳播」信號/事件時,消費者線程將醒來。他們本身只需要跟蹤他們離開的位置,然後只讀取信號偏移值。最後,生產者和消費者當然需要知道循環緩衝區從何處開始,它有多大,以便他們知道何時進行包裝。
是的,這是可能的。 –
你應該向我們展示你的嘗試,並描述它的行爲如何偏離你的期望。 – andand