我有6個線程在我的應用程序中不斷運行。場景是:在C++中處理boost線程爭用條件
一個線程不斷獲取消息並插入到消息隊列中。其他4個線程可以被認爲是連續從隊列中獲取消息並處理它們的工作者。另一個最終線程填充分析信息。
問題:
現在獲得消息線程的睡眠持續時間是100ms。工作者線程是200ms。當我運行這個應用程序時,消息獲取線程正在控制並插入隊列,從而增加了堆。工作線程沒有機會處理消息並釋放它們。最終導致內存不足。
如何管理這種場景,以便爲消息獲取線程和工作者線程提供平等的機會。
感謝提前:)
這被稱爲[讀者 - 作家問題](http://en.wikipedia.org/wiki/Readers-writers_problem)。也許這個關鍵字可以幫助你進行搜索。通常你的作者(提取)會檢查當前是否有讀者在等待和暫停。另一方面,你的讀者(工作人員)會檢查是否有作者在等待。如果使用條件變量,實現基本功能非常簡單。 – Zeta