【发布时间】:2010-11-29 17:10:15
【问题描述】:
我需要一个用于将消息从一个线程 (A) 传递到另一个线程 (B) 的队列,但是我无法找到一个真正满足我需求的队列,因为它们通常允许添加一个项目失败,这种情况在我的情况下是非常致命的,因为需要处理消息,并且线程真的不能停止并等待空闲空间。
- 只有线程 A 添加项目,只有线程 B 读取它们
- 线程 A 绝不能阻塞,但是线程 B 对性能并不重要,因此它可以
- 添加项目必须始终成功,因此队列不能有大小上限(系统内存不足)
- 如果队列为空,线程 B 应该等待,直到有项目要处理
【问题讨论】:
-
您使用的是什么线程库?线程?
-
boost::thread 和一些平台特定的代码在这里和那里
-
您的目标可能会导致内存不足,因为您不允许编写器线程阻止或删除项目。因此,如果您达到队列的临界大小限制,您必须决定是丢弃项目还是阻止写入线程。否则你会因为程序失败而间接丢弃物品:-)
-
嗯,队列最有可能一次有
标签: c++ windows linux multithreading message-queue