我有6个线程在我的应用程序中不断运行。场景是:在C++中处理boost线程争用条件
一个线程不断获取消息并插入到消息队列中。其他4个线程可以被认为是连续从队列中获取消息并处理它们的工作者。另一个最终线程填充分析信息。
问题:
现在获得消息线程的睡眠持续时间是100ms。工作者线程是200ms。当我运行这个应用程序时,消息获取线程正在控制并插入队列,从而增加了堆。工作线程没有机会处理消息并释放它们。最终导致内存不足。
如何管理这种场景,以便为消息获取线程和工作者线程提供平等的机会。
感谢提前:)
这被称为[读者 - 作家问题](http://en.wikipedia.org/wiki/Readers-writers_problem)。也许这个关键字可以帮助你进行搜索。通常你的作者(提取)会检查当前是否有读者在等待和暂停。另一方面,你的读者(工作人员)会检查是否有作者在等待。如果使用条件变量,实现基本功能非常简单。 – Zeta