2011-03-25 236 views
0

有一個消費者和單一生產者線程。生產者線程數據採集緩慢。它向套接字查詢數據,爲消費者生成數據所需的時間明顯長於消費者處理和發送數據所花費的時間。問題是我正在更新顯示器,所以我希望更新速度變慢,所以它們顯示爲連續的而不是突發更新。生產者/消費者線程中的油門消費者

我現在正在使用雙緩衝區,但消費者等待太久而無法交換緩衝區,因爲生產者花費的時間太長而無法生成數據。也許如果我將數據分成更小的塊並使用隊列來代替?那樣的話,製片人一次只能給消費者一點點食物呢?有沒有人遇到過這個問題?

+0

爲什麼立即更新顯示問題?這不會讓你的應用程序看起來比實際上慢嗎? – fbrereto 2011-03-25 18:40:48

+0

是的。它改善了用戶體驗。現在它更新非常快然後停止,因爲它需要獲取更多數據。我想分散時間,所以沒有停止。有另一種更簡單的方法可以實現嗎? – 2011-03-25 18:56:31

+0

人爲地限制消費者線程類型藐視使用線程,說實話。使用線程的主要原因是事情似乎變得更快(並且在多處理的情況下實際上會變得更快),因爲當生產者正在閱讀時,消費者_不是阻塞_。如果你扼殺了消費者,那麼你也可以劃傷整個多線程,並且只要在屏幕上寫下任何內容就可以了。 – Damon 2011-03-25 19:08:27

回答

1

爲什麼不有一個線程每秒更新一次屏幕?線程可以休眠一秒,喚醒,檢查生產者和消費者正在做什麼,並根據他們的進度更新屏幕。你會每秒獲得更新。如果您希望它們更快或更慢,請更改定時器間隔。

0

我將根據數據請求的速率將發送速率鎖定到客戶端。我原本以爲製片人會比這更快,所以我把它製作成生產者/消費者線索。這更像是一個幀速率問題,我需要以一致的速率同步輸出。