C++ 从并发向量中删除元素

C++ Removing elements from concurrent vectors

本文关键字:删除 元素 向量 并发 C++      更新时间:2023-10-16

我正在使用Visual C ++构建一个网络入侵检测系统,其组件之一是整个网络的TCP会话管理器。TCP 会话数据存储在并发向量中,以便可以从其他线程访问它。我发现一旦会话关闭,就没有简单的方法可以从并发向量中删除会话。所以我的问题是,您知道从并发向量中删除项目的最聪明的方法是什么。

智能 == 相当容易编程,不会对性能造成太大影响谢谢

我会考虑在这里使用std::set而不是向量 - 特别是如果存储的项目数量很大。 我想您还需要经常执行查找。

从集合中搜索和删除对于std::vector来说O(log(n))复杂性而不是O(n) - 尽管 集中的琐碎插入案例是O(1)的,而不是与集合O(log(n))

您还需要互斥锁来保护所有这些操作。