我打算做以下事情:
存储要使用的预构建对象的双端队列。主线程可能会到处使用这些对象。我有另一个垃圾线程用于日志记录和其他时间不紧迫但昂贵的事情。当预建对象用完时,我会在垃圾线程中重新填充它们。
现在我的问题是,这里会有比赛条件吗?从技术上讲,一个线程从前面消耗对象,另一个线程将对象推到后面。只要我不让尺寸下降到零,应该没问题。我唯一关心的是这个双端队列的“大小”。他们是否在 STL 容器中存储整数“大小”变量?修改该大小变量是否应该引入竞争条件?
解决这个问题的最佳方法是什么?我真的不想使用锁,因为主线程对性能至关重要(我首先预构建这些对象的原因!)