我編寫了一個用於模擬通信系統的代碼。在這個通信系統中,有一部分是我使用pthreads並行運行的。它基本上糾正了由通道引起的錯誤。如何提高使用障礙的C++ pthread代碼的時間性能
當我收到一個比特幀時,算法的3個組件在比特上運行。通常情況下,它們會一個接一個地運行,這會產生最佳性能,但會造成巨大的延遲。
這個想法是讓它們並行運行。但爲了獲得最佳性能,這3個組件同時處理每一點。
如果我只是平行運行它們,我會得到不好的結果,但性能相當快。所以我使用障礙來同步進程,每個比特在被三個組件處理之前允許它們跳到下一個比特。
此方法的性能是最佳的。但代碼運行速度非常慢,我比串行執行速度更慢。
該代碼在Ubuntu上運行GCC編譯器。
編輯:還有一個問題,線程去睡覺,而他們正在等待屏障打開?如果是的話,我如何阻止他們這樣做?
輸入緩衝區只能讀取所有線程,並且每個線程都應該有自己的輸出緩衝區。這樣你就不需要任何鎖,並且可以並行處理。 – SHR
這是一個很好的解決方案,但是,組件相互依賴,它們本質上是遞歸的。 – user304584
你如何產生線程?你在使用某種線程池嗎? – SHR