我即将在 C++ 上实现一个并发链接(单独)列表,并想与以前可能遇到类似挑战的人澄清一些观点。背景:最初该列表计划成为跳跃列表的一部分,而跳跃列表又是内存索引的一部分。当我开始实现这个时,我会想为什么不创建一个通用解决方案(以类似 stl 的方式),它可以在跳过列表之外使用。但似乎并发容器的工作方式可能与单线程容器有很大不同。例如,插入和删除操作将迭代器作为 std::list 中的输入参数,但在并发实现的情况下,如果另一个线程修改其附近的列表,则迭代器将变得无效。
如果列表是跳过列表的“层”,这不是问题,因为在这种情况下它是排序的,并且可以避免迭代器。但是我很好奇是否有人尝试实施通用解决方案来解决问题。
另一个问题.. 让这样的容器与 stl 算法兼容是否值得?似乎它们中的大多数可能由于并发而失败。
提前致谢!