我知道 std::queue 默认使用 std::deque 作为其内部容器。我找不到 TBB 的相同信息。
我有一个遗留的多线程应用程序,它当前使用围绕 std::queue<void*, std::list<void*>> 的线程安全包装器来存储相对较大的对象(58 个字节)。我目前正在寻找更好的替代方案来提高性能。
一种选择是摆脱链表并使用默认的 std::deque 作为内部容器,并从指针到对象切换到按值存储对象。分块分配的 std::deque 将在内存方面更好地扩展,因为没有。的元素增加。从缓存的角度来看,也有一些连续的元素会有所帮助。
另一种选择是使用 TBB 的 concurrent_bounded_queue。但是我没有足够的信息来知道将我的对象存储为值是否是一个可行的选择。
也欢迎任何替代建议。